A Slack bot for managing and tracking Dominions 6 games, providing updates and allowing players to interact with game information directly through Slack.
- Track multiple Dominions 6 games
- Automatically update game status and player turns
- Respond to various Slack commands for game management and information retrieval
- Fun responses to keywords like "grog" and "mad"
- Periodic task to update game information
/dom
: Main command for interacting with the botgame add <game_name>
: Add a new game to trackgame remove <game_name>
: Remove a game from trackinggame nickname <game_name> <nickname>
: Set a nickname for a gamegame list
: List all active gamesgame primary <game_name>
: Set a game as the primary gamegame status <game_name> <active|inactive>
: Set a game's active status
/check <game_name>
: Fetch the current status of a game from the website/turn
: Display the current turn status for the primary game/dom player <game_name> <nation> <player_name>
: Associate a player name with a nation in a specific game
commands/
: Command handlers for various bot functionalitiescontrollers/
: Logic for parsing commands and formatting responsesmodels/
: Data models for games, players, and lobby detailsresponders/
: Fun response handlers for keywordstasks/
: Background tasks for updating game informationutils/
: Utility functions and managers (database, logging, Slack)main.py
: Main entry point for the application
-
Clone the repository
-
Install dependencies:
uv sync
-
Set up environment variables:
SLACK_BOT_TOKEN
: Your Slack bot tokenSLACK_APP_TOKEN
: Your Slack app tokenDB_URI
: Database connection URILOG_LEVEL
: Logging level (default: INFO)
-
Run the bot:
uv run src.main
Unit tests are available in the *_test.py
files. Run tests using pytest:
uv run pytest