A Discord bot for World of Warcraft players. Posts weekly checklists, reset warnings, and surfaces relevant Blizzard blue posts and Wowhead news on a schedule.
- Features
- Quick start
- Configuration
- Commands
- Automatic schedule
- Project structure
- Deployment
- Development
- Contributing
- Built with AI agents?
- License
- Weekly checklist of WoW activities, posted on reset
- Reset warning the day before, with relevant blue posts attached
- Mythic+ integration — current affixes and season cutoffs via Raider.IO
- Blue Tracker monitoring — polls Wowhead's Blue Tracker every 30 minutes for new Blizzard posts
- Wowhead news monitoring — polls every 2 hours, only auto-posts reset-relevant articles to avoid spam
- Banner images & thematic fallbacks — posts use the source's image when available, with WoW-themed fallback art selected by content type
- Modular architecture — one Cog per command, easy to extend
git clone https://github.com/Deetss/AzerothHerald.git
cd AzerothHerald
pip install -r requirements.txt
cp .env.example .env # fill in DISCORD_TOKEN and TARGET_CHANNEL_ID
python bot.pyRequires Python 3.8+ and a Discord bot token with the Message Content Intent enabled.
Environment variables (loaded from .env):
| Variable | Required | Purpose |
|---|---|---|
DISCORD_TOKEN |
yes | Bot token from the Discord Developer Portal |
TARGET_CHANNEL_ID |
yes | Channel ID for scheduled posts |
RAIDER_IO_API_KEY |
no | Enables !affixes and !cutoffs |
- Go to the Discord Developer Portal and create an application.
- Under Bot, click Add Bot and copy the token.
- Enable the Message Content Intent (required for prefix commands).
- Paste the token into
.env.
Enable Developer Mode (User Settings → Advanced), right-click any channel, and pick Copy Channel ID.
Generate an OAuth2 URL with the bot scope and at minimum these permissions: Read Messages, Send Messages, Embed Links, Attach Files.
Prefix is !.
| Command | Description |
|---|---|
!checklist |
Weekly WoW activities checklist with recent blue posts |
!warning |
Reset warning message with recent blue posts |
!time |
Current UTC time and the next scheduled posts |
!affixes [region] |
Current Mythic+ affixes — requires RAIDER_IO_API_KEY |
!cutoffs [region] |
M+ season rating cutoffs — requires RAIDER_IO_API_KEY |
!bluetrack |
Manually check for new Blizzard blue posts |
!news [check|latest|reset|test|clear] |
Inspect or refresh Wowhead news state |
!newssummary |
Categorized summary of recent Wowhead news |
!test |
Sanity check that the bot is responsive |
!help [command] |
Help for all commands or a specific one |
Regions for !affixes / !cutoffs: us, eu, kr, tw, cn (default: us).
All times are fixed in UTC. Local US-Central times are approximate and shift by one hour across daylight saving transitions.
| When (UTC) | Local (US Central) | What |
|---|---|---|
| Monday 18:00 | 1:00 PM CDT / 12:00 PM CST | Reset warning + blue posts |
| Tuesday 16:00 | 11:00 AM CDT / 10:00 AM CST | Weekly checklist + blue posts |
| Every 30 min | — | Blue Tracker poll (US region) |
| Every 2 hours | — | Wowhead news poll (auto-posts only reset-relevant articles) |
.
├── bot.py # Entry point — loads cogs, starts scheduler
├── dev_runner.py # Dev runner with watchdog-based auto-reload
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── docker-dev.sh
├── src/
│ ├── commands/ # One Cog per command
│ ├── utils/ # Embeds, API clients, scrapers, error handling
│ └── tasks/ # Scheduled background loops
└── docs/ # Architecture and development notes
See docs/ARCHITECTURE.md for the full layout and design rationale.
./docker-dev.sh dev # development with hot reload
./docker-dev.sh prod # production modeOr with docker compose directly:
docker compose up bot-dev # development
docker compose up bot-prod # productionThe bot reads its config from .env, so make sure that file exists alongside the compose file before starting.
A Procfile is included (worker: python bot.py) for platforms that use it.
Use dev_runner.py for auto-reload on file changes:
python dev_runner.pySee docs/DEVELOPMENT.md for details on the dev runner, VS Code tasks, and debugging tips.
Contributions are very welcome — bug reports, fixes, features, and docs. See CONTRIBUTING.md for setup, conventions, and the PR checklist. All participants are expected to follow the Code of Conduct.
This repo is friendly to AI-assisted development. Project-wide guidance for AI coding agents (Claude Code, Cursor, Codex, Aider, Zed, Continue, etc.) lives in AGENTS.md — point your tool at that file rather than duplicating guidance per-tool.
Released under the MIT License.