Joey Hines 086bd1051e | ||
---|---|---|
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md |
README.md
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 <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 <duration> <msg>
- Send the next phase message. Also cycles the phase!terminate <player>
- Kills a player and removes them from the game!add_time <duration>
- 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
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"]