def process_new_messages(self, new_messages): result = [] for new_message in new_messages: if new_message.date < time.time() - 180: continue result.append(new_message) if result: TeleBot.process_new_messages(self, result)
class DoorAlertBot: def __init__(self, config_provider: TokenProvider, telegram_bot_message_handler: BotMessageHandler): self._config_provider = config_provider self._message_handler = telegram_bot_message_handler self._bot = None def init_bot(self): token = self._config_provider.get_token() self._bot = TeleBot(token=token) def contains_chat(self, chat_id): return self._message_handler.contains_chat(chat_id) def get_chat(self, chat_id): self._check_bot_initialized() return self._bot.get_chat(chat_id) def get_chat_administrators(self, chat_id): self._check_bot_initialized() return self._bot.get_chat_administrators(chat_id) def process_new_messages(self, messages: list): self._check_bot_initialized() self._bot.process_new_messages(messages) def _check_bot_initialized(self): bot = self._bot if bot is None: msg = 'Bot is not initialized.' logger.critical(msg) raise DoorAlertBotException(msg) def init_handlers(self): self._check_bot_initialized() bot = self._bot bot_message_handler = self._message_handler @bot.message_handler(commands=['start', 'welcome']) @log def send_welcome(message): bot_message_handler.handle_welcome(bot, message) @bot.message_handler(commands=['help']) @log def send_help(message): bot_message_handler.handle_help(bot, message) @bot.message_handler(commands=['subscribe']) @log def subscribe_chat(message): bot_message_handler.handle_subscribe_chat(bot, message) @bot.message_handler(commands=['subscriptions']) @log def get_subscriptions(message): bot_message_handler.handle_get_subscriptions(bot, message) @bot.message_handler(commands=['unsubscribe']) @log def unsubscribe_chat(message): bot_message_handler.handle_unsubscribe_chat(bot, message) #### Just some test def find_at(msg): for text in msg: if '@' in text: return text @bot.message_handler( func=lambda msg: msg.text is not None and '@' in msg.text) @log def at_answer(message): texts = message.text.split() at_text = find_at(texts) bot.reply_to(message, 'https://instagram.com/{}'.format(at_text[1:])) #### End def polling(self, *args, **kwargs): logger.info("Start polling...") self._bot.polling(*args, **kwargs) logger.info("Polling ended.")