Discord bot for miscellaneous tasks on the VATSIM Community server.
/charts- ChartFox airport chart lookup/metar- VATSIM METAR and AVWX TAF- A button in the screenshot channels that posts an uploaded image as an embed
- Publishes messages posted in announcement channels where it has Manage Messages
- Relays VATSIM network broadcasts from Kafka to a channel
- Posts VATSIM event and controller exam announcements
Command access is managed in Discord under Server Settings > Integrations.
Set via environment variables or a .env file. A missing required variable aborts startup.
| Variable | Default | Description |
|---|---|---|
DISCORD_BOT_TOKEN |
required | Discord bot token |
AVWX_KEY |
required | AVWX API token, for TAFs in /metar |
CHARTFOX_KEY |
required | ChartFox API token, for /charts |
EVENTS_CHANNEL_ID |
unset | Event announcements. Unset stops them |
EXAMS_CHANNEL_ID |
unset | Controller exam announcements. Unset stops them |
NETWORK_BROADCASTS_CHANNEL_ID |
unset | Network broadcast relay. Unset stops it |
SCREENSHOT_CHANNEL_IDS |
[] |
JSON list of channels that get the post button, e.g. [123,456] |
SCREENSHOT_VOTING_CHANNEL_ID |
unset | Which of those channels adds an author header and a voting reaction. Unset gives every channel the plain embed |
NETWORK_KAFKA_SERVER |
empty | Broadcast Kafka bootstrap server |
NETWORK_KAFKA_USERNAME |
empty | Broadcast Kafka SASL username |
NETWORK_KAFKA_PASSWORD |
empty | Broadcast Kafka SASL password |
NETWORK_KAFKA_GROUP |
unset | Broadcast Kafka consumer group |
LOG_LEVEL |
INFO |
Python logging level |
uv sync
uv run python run.py
uv run ruff check
uv run ruff formatGNU Affero General Public License v3.0. See LICENSE.