Skip to main content

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

Setup

  1. Clone the repository

    git clone https://github.com/TobiasGoetz/pibot.git
    cd pibot
    
  2. Install dependencies

    uv sync
    
  3. Set up environment variables

    Copy the example environment file and create your .env file with your values:

    cp .env.example .env
    

    Edit .env with your actual values. See Environment variables for the full list.

  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pibot_discord-3.5.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pibot_discord-3.5.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

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

Hashes for pibot_discord-3.5.0.tar.gz
Algorithm Hash digest
SHA256 c73421038dfd22ae20d44a882bc00c98f4c08055f544959437cda5c84bb1d7cd
MD5 b49e817bc13b9737db1f1710f48c4e5b
BLAKE2b-256 512b58fc854cf09c410391661200f8402dd88dc07d16f70a645bff878710859a

See more details on using hashes here.

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

Hashes for pibot_discord-3.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f554147abd7bb0d08c74c84775fc77758430210aa8843716c8137921ebc3ba2f
MD5 5f3326f6fed5fd2c69fa7be79be63a32
BLAKE2b-256 c5455abbde6e283a97bc583b1f5112caf6b9e0d5e804bab68a97eb60f000f670

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page