Show HN: Squire – A Game Night discord bot

4 hours ago 2

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.

/create_session <game> [session_name] [session_date]

Creates a session for a game you own.

/add_session_users <session_id>

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
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt

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

Read Entire Article