BradBot is a feature-rich Discord bot that powers moderation tools, boosters, polls, TTS utilities, and GitHub integrations across multiple communities.
- Admin automation: interactive settings panels, conditional roles, booster-role management, and
/admin syncto refresh slash commands instantly. - Community engagement: GitHub issue forms, advanced polls (stats, word clouds, persistent panels), reminder/timer utilities, and an
/echohelper. - Counting channel: configurable counting channel with math expressions, anti-double-posting, penalty role (24h), auto-reset on mistakes, and admin controls for next number/reset/disable.
- Link control:
/link editand/link deletelet users fix or remove the bot’s link-replacement posts without staff intervention. - Starboards: Multi-board hall-of-fame powered by reactions (
/starboard set/list/delete/lock/block/top) with per-emoji thresholds and NSFW filters. - Voice & TTS: Polly-backed
/voice ttsqueue with default voice/language selection plus/voice filter_voices,/voice join/leave, and/voice show_tts_options. - Conversion suite:
/convertcommands for testosterone calculations, temperature/length/weight/liquids/timezones, and an international shoe-size converter that supports men/women with half-size rounding. - Secrets-aware deployment: Automatically hydrates sensitive values from AWS Secrets Manager (
BradBot/creds) so tokens never live in plain text on the box.
git clone https://github.com/your-org/BradBot.git
cd BradBot
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # edit with your tokens + DB config
python scripts/migrate.py
python main.pyUse /admin sync or the owner-only :resync text command whenever you change slash command definitions to ensure Discord picks them up immediately.
- Production instances should run via
systemd(bradbot.service) and setSECRETS_MANAGER_ID=BradBot/creds. - Grant the EC2 IAM role
secretsmanager:GetSecretValueon that secret; BradBot will fetchDISCORD_TOKEN,GITHUB_TOKEN, and other sensitive values automatically at startup. - Polls, reminders, boosters, and conditional roles rely on the background tasks in
core/tasks.py. Restarting the bot will respawn the tasks if needed.
See the docs directory for full instructions, troubleshooting tips, and command-by-command breakdowns.