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()