Squire is a Discord bot designed to help communities manage board game collections, track play sessions, and coordinate game nights. It integrates with BoardGameGeek for game data and uses Supabase as its backend.
- Register users to the server
- Search and add games from BGG
- View your personal or others' game collections
- Create and log game sessions
- Add session participants and winners
- Ask AI questions about game rules
Registers you in the system. Optionally includes a nickname.
Searches BGG and lets you add a game to your collection.
Displays the collection of the user who invoked the command, or another specified user.
Removes a game from your personal collection.
Creates a session for a game you own.
Interactive UI to add users to an existing session.
Interactive UI to select and log the winners of a session.
Shows a list of sessions logged for a specific game.
Displays BGG data and lets you add the game to your collection. Similar to /add_game but the game info is posted publicly, whereas /add_game is only seen by the specific user.
Shows which users own a specific game.
Uses OpenAI to answer questions about game rules (⚠️ AI generated, may be inaccurate).
-
Python 3.11+
-
A Supabase project with tables:
- users, games, users_games, sessions, users_sessions, sessions_winners, users_servers
-
BoardGameGeek API (XML)
-
.env file with:
DISCORD_TOKEN_DEV=12345 DISCORD_TOKEN_PROD=6789 SUPABASE_URL_PROD=https://your_project_url.supabase.co SUPABASE_KEY_PROD=12345 SUPABASE_URL_DEV=https://your_dev_project_url.supabase.co SUPABASE_KEY_DEV=56789 OPEN_AI_DEV_KEY=12345 OPEN_AI_PROD_KEY=56789 GUILD_ID=your_discord_server_id GUILD_ID_2=your_discord_server_id ENV=prod|dev
Use systemctl to manage your bot as a background service.
Use journalctl -u your_service_name to view logs.
- Button and UI interactions timeout after 60 seconds.
- BGG search labels are truncated to fit Discord UI limits.
- AI answers should not be relied upon for serious rule debates.
Short-Term Goals
- Add stats (i.e. most played games, most won, etc)
- Better test coverage
Mid-Term Goals
- Build a web interface
Long-Term Goals
- Host bot for other servers?
MIT License © 2025 Rane Wallin