From e2902031e4f97a5de3a2d7b18cffb462f42a63c2 Mon Sep 17 00:00:00 2001 From: Alexander Skovpen Date: Sun, 28 Aug 2016 00:49:01 +0300 Subject: [PATCH 1/2] add telegram event handler --- pokemongo_bot/cell_workers/telegram_task.py | 13 ++++++++--- pokemongo_bot/event_handlers/__init__.py | 1 + .../event_handlers/telegram_handler.py | 23 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 pokemongo_bot/event_handlers/telegram_handler.py diff --git a/pokemongo_bot/cell_workers/telegram_task.py b/pokemongo_bot/cell_workers/telegram_task.py index 0d698930c0..3478f30f37 100644 --- a/pokemongo_bot/cell_workers/telegram_task.py +++ b/pokemongo_bot/cell_workers/telegram_task.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- import telegram import os +import logging import json from pokemongo_bot.base_task import BaseTask from pokemongo_bot.base_dir import _base_dir - +from pokemongo_bot.event_handlers import TelegramHandler class TelegramTask(BaseTask): SUPPORTED_TASK_API_VERSION = 1 update_id = None @@ -13,6 +14,7 @@ class TelegramTask(BaseTask): def initialize(self): if not self.enabled: return + self.logger = logging.getLogger(type(self).__name__) api_key = self.bot.config.telegram_token if api_key == None: self.emit_event( @@ -21,6 +23,8 @@ def initialize(self): ) return self.tbot = telegram.Bot(api_key) + if self.config.get('master',None): + self.bot.event_manager.add_handler(TelegramHandler(self.tbot,self.config.get('master',None),self.config.get('alert_catch'))) try: self.update_id = self.tbot.getUpdates()[0].update_id except IndexError: @@ -32,6 +36,9 @@ def work(self): for update in self.tbot.getUpdates(offset=self.update_id, timeout=10): self.update_id = update.update_id+1 if update.message: + self.logger.info("message from {} ({}): {}".format(update.message.from_user.username, update.message.from_user.id, update.message.text)) + if self.config.get('master',None) and self.config.get('master',None)<>update.message.from_user.id: + continue if update.message.text == "/info": stats = self._get_player_stats() if stats: @@ -45,8 +52,8 @@ def work(self): "*"+self.bot.config.username+"*", "_Level:_ "+str(stats["level"]), "_XP:_ "+str(stats["experience"])+"/"+str(stats["next_level_xp"]), - "_Pokemons Captured:_ "+str(stats["pokemons_captured"])+" ("+str(catch_day)+" _today_)", - "_Poke Stop Visits:_ "+str(stats["poke_stop_visits"])+" ("+str(ps_day)+" _today_)", + "_Pokemons Captured:_ "+str(stats["pokemons_captured"])+" ("+str(catch_day)+" _last 24h_)", + "_Poke Stop Visits:_ "+str(stats["poke_stop_visits"])+" ("+str(ps_day)+" _last 24h_)", "_KM Walked:_ "+str(stats["km_walked"]) ) self.tbot.sendMessage(chat_id=update.message.chat_id, parse_mode='Markdown', text="\n".join(res)) diff --git a/pokemongo_bot/event_handlers/__init__.py b/pokemongo_bot/event_handlers/__init__.py index 68c2636b12..c4c03cc37f 100644 --- a/pokemongo_bot/event_handlers/__init__.py +++ b/pokemongo_bot/event_handlers/__init__.py @@ -2,3 +2,4 @@ from socketio_handler import SocketIoHandler from colored_logging_handler import ColoredLoggingHandler from social_handler import SocialHandler +from telegram_handler import TelegramHandler diff --git a/pokemongo_bot/event_handlers/telegram_handler.py b/pokemongo_bot/event_handlers/telegram_handler.py new file mode 100644 index 0000000000..826e2214f5 --- /dev/null +++ b/pokemongo_bot/event_handlers/telegram_handler.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from pokemongo_bot.event_manager import EventHandler +import thread + +DEBUG_ON = False + +class TelegramHandler(EventHandler): + def __init__(self, tbot,master,pokemons): + self.tbot = tbot + self.master=master + self.pokemons=pokemons + + def handle_event(self, event, sender, level, formatted_msg, data): + if self.master: + if event == 'level_up': + self.tbot.sendMessage(chat_id=self.master, parse_mode='Markdown', text="level up ({})".format(data["current_level"])) + elif event == 'pokemon_caught': + if data["pokemon"] in self.pokemons or self.pokemons[0]=="all": + self.tbot.sendMessage(chat_id=self.master, parse_mode='Markdown', + text="Caught {} CP: {}, IV: {}".format(data["pokemon"],data["cp"],data["iv"]) + ) + + From 3a2dfee74d31f437e8a1c86f7cda16a06e7ff3b4 Mon Sep 17 00:00:00 2001 From: Alexander Skovpen Date: Sun, 28 Aug 2016 00:50:31 +0300 Subject: [PATCH 2/2] config change --- configs/config.json.example | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configs/config.json.example b/configs/config.json.example index 320cadcf1f..0ed24367ef 100644 --- a/configs/config.json.example +++ b/configs/config.json.example @@ -10,7 +10,9 @@ { "type": "TelegramTask", "config": { - "enabled": false + "enabled": false, + "master": null, + "alert_catch": ["all"] } }, {