Skip to content

zachnorman02/BradBot

Repository files navigation

BradBot

BradBot is a feature-rich Discord bot that powers moderation tools, boosters, polls, TTS utilities, and GitHub integrations across multiple communities.

Highlights

  • Admin automation: interactive settings panels, conditional roles, booster-role management, and /admin sync to refresh slash commands instantly.
  • Community engagement: GitHub issue forms, advanced polls (stats, word clouds, persistent panels), reminder/timer utilities, and an /echo helper.
  • 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 edit and /link delete let 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 tts queue with default voice/language selection plus /voice filter_voices, /voice join/leave, and /voice show_tts_options.
  • Conversion suite: /convert commands 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.

Documentation

Quick Start

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

Use /admin sync or the owner-only :resync text command whenever you change slash command definitions to ensure Discord picks them up immediately.

Deployment Notes

  • Production instances should run via systemd (bradbot.service) and set SECRETS_MANAGER_ID=BradBot/creds.
  • Grant the EC2 IAM role secretsmanager:GetSecretValue on that secret; BradBot will fetch DISCORD_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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published