2.4. A textadventure game as a telegram chatbotΒΆ
This is an example of a chatbot on telegram that acts as an adventure game.
Suppose you have all your custom stuff defined in mystuff.py
.
from mystuff import rooms, items, monsters, MyPlayer, MyWorld, MyParser
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
class Game:
def __init__(self):
world = MyWorld(rooms=rooms, items=items, monsters=monsters)
player = MyPlayer(world, world.room("start"))
self.parser = MyParser(player)
def play(self, command):
return self.parser.understand(command.lower())
class GameBot:
def __init__(self):
# save games with all players
self.games = {}
def start(self, bot, update):
# start a new game
self.games[update.message.chat_id] = Game()
def respond(self, bot, update):
# get the game with this player
game = self.games[chat_id]
# give the player's message as input to the game
response = game.play(update.message.text)
bot.send_message( chat_id=chat_id, text=response )
def main(self):
# main routine for the bot
token = "mytoken"
updater = Updater(token)
dp = updater.dispatcher
# define the behaviour of the bot
dp.add_handler(CommandHandler("start", self.start))
dp.add_handler(MessageHandler(Filters.text, self.respond))
updater.start_polling()
updater.idle()
# create the chat bot and run it!
if __name__ == "__main__":
gamebot = GameBot()
gamebot.main()