Multi-purpose Discord Bot
Project description
PiBot
A discord bot providing administration and utility features!
Features
- Easy to run (uses Python)
- Modular cog-based architecture
- MongoDB integration for guild settings
- DeepL translation support
- Development tools for testing
Installation
How to run a released build depends on where you want it to run.
As a Python package
Install from PyPI and run the pibot console script:
pip install pibot
# or: uv add pibot
pibot
As a container image
Each release publishes the same image to Docker Hub and to GitHub Container Registry (workflow).
| Registry | Image reference (example) |
|---|---|
| Docker Hub | tobiasgoetz/pibot: docker run --env-file .env tobiasgoetz/pibot:latest |
| GHCR | ghcr.io/tobiasgoetz/pibot:latest (and version tags; path uses a lowercased GitHub owner/repo) — e.g. docker run --env-file .env ghcr.io/tobiasgoetz/pibot:latest |
To build an image from this repository locally, see Docker below.
On Kubernetes
Install the published Helm chart from GHCR OCI (workflow). Use an app version that matches pyproject.toml / the GitHub release:
helm install pibot oci://ghcr.io/tobiasgoetz/helm-charts/pibot --version <version>
You can configure the deployment via the chart values file (and overrides); see charts/pibot/README.md.
Further release and command details: AGENTS.md.
Environment variables
Configure these for docker run, Helm values, or a .env file (see .env.example). Names match what the process reads via the environment.
| Variable | Required | Default | Options | Description |
|---|---|---|---|---|
DISCORD_TOKEN |
Required | — | — | Bot token from the Discord Developer Portal. |
MONGODB_URI |
Required | — | Standard MongoDB URI (mongodb://…, mongodb+srv://…, etc.) |
Connection string for your MongoDB instance (local or Atlas). |
DEEPL_API_KEY |
Required | — | — | DeepL API key; required because the translation cog loads at startup. |
COMMAND_SYNC_BEHAVIOR |
Optional | global |
global, local |
Startup slash-command sync: global runs a global Discord sync; local skips it (use DevTools guild sync). Invalid or unset → global. See command_sync_behavior() and COMMAND_SYNC_BEHAVIOR in pibot/settings.py. |
ENABLE_DEV_TOOLS |
Optional | false |
true, false (also 1 / 0) |
Load the DevTools cog when true. Unset → false. See is_dev_tools() in pibot/settings.py. |
LOG_LEVEL |
Optional | INFO |
DEBUG, INFO, WARNING, ERROR, CRITICAL |
Logging level for discord.utils.setup_logging (and thus the root logger). Use DEBUG to see logger.debug output from PiBot and discord. Unknown values fall back to INFO. |
Local development
Prerequisites
- Python 3.14 or higher
- uv package manager
- MongoDB instance (local or remote)
- Discord bot token from Discord Developer Portal
Setup
-
Clone the repository
git clone https://github.com/TobiasGoetz/pibot.git cd pibot
-
Install dependencies
uv sync -
Set up environment variables
Copy the example environment file and create your
.envfile with your values:cp .env.example .env
Edit
.envwith your actual values. See Environment variables for the full list. -
Run the bot
uv run pibot
Behaviour in development
Defaults are COMMAND_SYNC_BEHAVIOR=global and ENABLE_DEV_TOOLS=false. For local development without global sync at startup, set COMMAND_SYNC_BEHAVIOR=local; enable DevTools with ENABLE_DEV_TOOLS=true and use DevTools sync for guild-scoped command testing. See AGENTS.md.
Linting, types, docs, and releases
See AGENTS.md for Ruff/ty commands, Sphinx doc regeneration, Docker/Helm/PyPI flows, and Release Please.
Docker (local builds)
To build and run the image on your machine (no registry push):
docker build -t pibot:local .
docker run --env-file .env pibot:local
For day-to-day development, uv run pibot is usually faster than rebuilding images.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pibot_discord-3.5.0.tar.gz.
File metadata
- Download URL: pibot_discord-3.5.0.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c73421038dfd22ae20d44a882bc00c98f4c08055f544959437cda5c84bb1d7cd
|
|
| MD5 |
b49e817bc13b9737db1f1710f48c4e5b
|
|
| BLAKE2b-256 |
512b58fc854cf09c410391661200f8402dd88dc07d16f70a645bff878710859a
|
File details
Details for the file pibot_discord-3.5.0-py3-none-any.whl.
File metadata
- Download URL: pibot_discord-3.5.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f554147abd7bb0d08c74c84775fc77758430210aa8843716c8137921ebc3ba2f
|
|
| MD5 |
5f3326f6fed5fd2c69fa7be79be63a32
|
|
| BLAKE2b-256 |
c5455abbde6e283a97bc583b1f5112caf6b9e0d5e804bab68a97eb60f000f670
|