# wOXlf Discord bot for managing an anonymous [Werewolf Game](https://en.wikipedia.org/wiki/Mafia_(party_game)). ## How It Works A host gets a list of players to play, and then begins the game with the `!start` command. Each player is assigned a channel where they will view the game through. The player can read and send messages in this channel normally. When a message is sent, it is forwarded to all other player channels. The message's author is obscured by a codename. During day phases, players can cast a vote for who they wish to "terminate" that day. The game proceeds as a normal Werewolf game. ## Channels * Host Channel: Used by the host to interact with the game, can also be used by spectators to see the game state. * Real player names are displayed along with code names in this channel * Player Channel: A channel for a single player, allows them to chat with the other players and run commands. * Vote Channel: Contains all the votes made in a game. ## Commands ## Host * `!start ` - starts the game * `!end` - Ends the current game * `!say ` - Allows the host to speak into the game chat * `!broadcast ` - Broadcasts a system message, this message is then pinned in each player channel * `!next_phase ` - Send the next phase message. Also cycles the phase * `!terminate ` - Kills a player and removes them from the game * `!add_time ` - Adds more time to the current game ## Players * `!vote ` - Casts a vote for a player to be terminated. Only can be used during the day phase * `!status` - Get the current game status. Includes time left in the phase and current vote tallies ## Example Config ```toml # Discord Bot Token token = "" # Discord App Id app_id = 0 # Channel to accept host commands from host_channel = 1 # Channel to put vote status messages in vote_channel = 2 # Category to crate the player cannels in category = 3 # Directory to save game data into, game data will be saved as "wOxlf.toml" game_state_dir = "." # Random code names are generated in the format of occupation = ["Engineer", "Scientist", "Dancer", "Farmer", "Captain", "Janitor", "Author", "Bartender", "Bum", "Student", "Teacher", "Chef", "Waiter", "Comedian"] adjective = ["Sleepy", "Drunk", "Smart", "Gifted", "Extreme", "Eccentric", "Amazing", "Bad", "Silly", "Dumb", "Smelly"] ``` ## License [MIT License](./LICENSE)