imaginaryfriend/src/handler/status_handler.py

37 lines
1.1 KiB
Python
Raw Normal View History

2016-11-12 13:37:14 +01:00
import logging
from telegram.ext import MessageHandler, Filters
from src.domain.status import Status
from src.entity.chat import Chat
class StatusHandler(MessageHandler):
2016-11-12 14:56:42 +01:00
def __init__(self, chat_purge_queue):
2016-11-12 13:37:14 +01:00
super(StatusHandler, self).__init__(
Filters.status_update,
2016-11-12 14:56:42 +01:00
self.handle)
2016-11-12 13:37:14 +01:00
2016-11-12 14:56:42 +01:00
self.chat_purge_queue = chat_purge_queue
2016-11-12 13:37:14 +01:00
2016-11-12 14:56:42 +01:00
def handle(self, bot, update):
2016-11-12 13:37:14 +01:00
chat = Chat.get_chat(update.message)
2016-11-12 14:56:42 +01:00
status = Status(chat=chat, message=update.message)
2016-11-12 13:37:14 +01:00
if status.is_bot_added():
2016-11-12 14:56:42 +01:00
return self.__process_bot_add(status)
2016-11-12 13:37:14 +01:00
elif status.is_bot_kicked():
2016-11-12 14:56:42 +01:00
return self.__process_bot_kick(status)
2016-11-12 13:37:14 +01:00
2016-11-12 14:56:42 +01:00
def __process_bot_kick(self, status):
2016-11-12 13:37:14 +01:00
logging.debug("[Chat %s %s bot_kicked]" %
(status.chat.chat_type, status.chat.telegram_id))
2016-11-12 14:56:42 +01:00
self.chat_purge_queue.add(status.chat.id)
2016-11-12 13:37:14 +01:00
2016-11-12 14:56:42 +01:00
def __process_bot_add(self, status):
2016-11-12 13:37:14 +01:00
logging.debug("[Chat %s %s bot_added]" %
(status.chat.chat_type, status.chat.telegram_id))
2016-11-12 14:56:42 +01:00
self.chat_purge_queue.remove(status.chat.id)