An open-source quizbowl discord bot.
All data is sourced from QB Reader (check out its repo as well!) via its API.
Contributions are welcome! I licensed this under AGPL-3.0 specifically to encourage contributions.
This bot requires Python 3.10 and a discord bot token. You can get a token by creating a new application on the Discord Developer Portal.
Make sure you have Poetry installed as well, if not, you can install it with:
curl -sSL https://install.python-poetry.org | python3 -
Then, clone the repository and run poetry install
to install the dependencies:
git clone https://github.com/g3ner1c/qb-bot
cd qb-bot
poetry install
If there is no config.json
file in the root directory, the bot will create one for you, using the defaults in config_default.json
.
Variables related to the bot application itself should be set as environment variables.
prefix
: The prefix for the bot's commands. Defaults to>
.embed_colors
: An object containing hex coded colors for the bot to color embeds with. Defaults to:neutral
:0xAE4DFF
(purple)error
:0xE02B2B
(red)success
:0x00FF00
(green)
You can set environment variables in a .env
file in the root directory or in your shell environment.
CLIENT_ID
: The client ID of the bot application (you can find this in the Dev Portal as well).TOKEN
: The bot token (please don't share this with anyone or bad things can happen).
Now that you have everything set up, you can simply run the bot with:
poetry run python3 bot/
Congratulations! :D
There are a lot of feature ideas in my head for this bot, but I'm not sure how many I'll actually get around to implementing. The general idea is to eventually make a "universal" quizbowl bot that can be used for a multitude of purposes. If you have any feature requests, feel free to open an issue or a pull request.
- Random tossups and bonuses by category and difficulty
- Singleplayer TK and PK sessions
- Multiplayer sessions
- TTS tossup reading
- Database queries
- Playing packets
- Downloading packets
- Buzzer and point tracking aiding a human reader
- Game scoring