A discord bot with tools and automatic puzzlehunt progress tracking for a small to medium sized team. For fun, the bot is named after a character from the works of Brandon Sanderson.
Puzzle progress stored in a master "Nexus" google sheet.
- With a
!createroundcommand: create a new category, general channel, voice channel, update nexus - With one puzzle
!createcommand: create puzzle channel, duplicate template google sheet, update nexus sheet, send links to discord - Log answer in nexus sheet with
!solve - View and update
!logininfo for team - View puzzle progress in
!nexus - Store and update common resources in
!tag
Example of auto-populated nexus sheet (answers removed)
!n: Nutrimatic for anagrams, regex search, patterns, etc!cc: Caesar shift!alpha: Alphanumeric A1Z26!atom: Periodic table!atbash: Atbash cipher!v: Vigenere cipher
The setup relies on a Google service account and a AWS DynamoDB connection.
- Create a
.envwith your tokens.
DISCORD_TOKEN= ... # your discord bot token
GOOGLE_CLIENT_SECRETS=... # google service account credentials
BASE_NEXUS_ID= ... # for !createhunt, the stuff in your nexus URL after /d/ and before /edit?=
BASE_TEMPLATE_ID= ... # for !createhunt, the stuff in your template URL after /d/ and before /edit?=
DATABASE_PATH= ... # the relative path to your database file
- Enable Google API following instructions on gspread documentation to get a
client_secrets.jsonfor a service account. - Initialize the database tables. This can either be done:
- [forthcoming] on the M-Bot side (or for standalone M-Bot) via
python utils/db_init.py. Note that this may require replacing the database or generating your own update scripts if new changes are made in the future. - on the Shardboard side via the usual Django database commands (
python manage.py makemigrations/python manage.py migrate)
- [forthcoming] on the M-Bot side (or for standalone M-Bot) via
- Set up base Nexus and Puzzle Template sheets (shared w/ service account address).
- Feel free to message me for details/help.