A telegram bot that assists the narrator of a game of Werwolf.
The goal of this bot is to take away the boring and tiresome work that comes with narrating a game of Werwolf while still leaving the narrator enough room to make the game interesting and deal with unexpected situations
Project is created with: Python: 3.8.10 with python-telegram-bot 13.8.1 with python-dotenv 0.19.2
The unique key for the telegram bot is hidden in a personal '.env'-file. To use the code with your own bot, create this file inside the config folder and write:
BOT_KEY='key'
To work properly the bot has to be an Admin in the group he is added to.
- start : first interaction with the bot. They greet you
- list_players : returns list of all players, sorted in "alive" and "dead"
- list_roles : returns list of all roles that are used in this game
- rules [rolename] : prints either all rules or the description of a specific role
- n_join : you join the game as the narrator if there is no narrator yet
- start_join : starts the joining-phase and allows players to join
- end_join : ends the joining-phase
- choose_roles : can be executeed after joining phase has ended. let's the narrator choose the roles based on a pre-set list and the number of players
- distr_roles : can be executed after joining phase has ended. distributes the (special) roles from the chosen list to all players
- vote [name1][opt name2][opt name 3] : starts the voting process. The bot writes each player in PC and let's them choose one from the names through custom keyboard
- vote_for [name][vote] : allows the narrator vote for a player
- results : ends the voting process and returns the result in the group chat
- kill [name] : changes the players state to dead and removes their right to write in the group chat
- good morning : gives all alive players the rights to write in the group chat
- good night : removes every players rights to write in the group chat
- reset : deletes all information, including the narrators id
- join : the player has to add a name and is then added to the game. Can only be used during joining phase
- cancel : cancels the joining process of this player
- change_vote : can be used during the voting process to change the vote after it has already been locked in