From 78afd045d81b32bdc5b024e7eb6c8c2645650cd4 Mon Sep 17 00:00:00 2001 From: Badiboy Date: Sun, 27 May 2018 23:24:37 +0300 Subject: [PATCH] _notify_next_handlers drops messages if empty handler list After calling clear_step_handler(...) code: self.next_step_handlers[chat_id] = [] left the key in next_step_handlers. When a next message arrives, the old handler executes nothing (no handlers), but still remove message from message queue: new_messages.pop(i). Updated to pop message only when there are real handlers in the list. --- telebot/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/telebot/__init__.py b/telebot/__init__.py index 8f9b60b..2204bfa 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -1155,10 +1155,11 @@ class TeleBot: chat_id = message.chat.id if chat_id in self.next_step_handlers.keys(): handlers = self.next_step_handlers[chat_id] - for handler in handlers: - self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"]) + if (handlers): + for handler in handlers: + self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"]) + new_messages.pop(i) # removing message that detects with next_step_handler self.next_step_handlers.pop(chat_id, None) - new_messages.pop(i) # removing message that detects with next_step_handler i += 1 @staticmethod