+ Added imgur module to handle interacting with the imgur api + Users now get a random profile pic from an imgur album + Switched to using webhook ids instead of storing the full webhook in toml, serenity does not seem to like the toml deserialization
wOXlf
Discord bot for managing an anonymous Werewolf 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 <hours>h<minutes>m <list of player ids>
- starts the game$end
- Ends the current game$say <msg>
- Allows the host to speak into the game chat$broadcast <msg>
- Broadcasts a system message, this message is then pinned in each player channel$next_phase <hours>h<minutes>m <msg>
- Send the next phase message. Also cycles the phase$terminate <player>
- Kills a player and removes them from the game$add_time <hours>h<minutes>m
- Adds more time to the current game
Players
$vote <player>
- 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$players
- Lists all the players in the game
Example Config
# 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 <Adjective> <Occupation>
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
Languages
Rust
100%