Fix: do not call handler in one more task
This commit is contained in:
parent
e7a96ec2ed
commit
52e09637c2
|
@ -1088,11 +1088,6 @@ class TeleBot:
|
||||||
|
|
||||||
|
|
||||||
def _exec_task(self, task, *args, **kwargs):
|
def _exec_task(self, task, *args, **kwargs):
|
||||||
if kwargs:
|
|
||||||
if kwargs.pop('task_type', "") == 'handler':
|
|
||||||
if kwargs.pop('pass_bot', False):
|
|
||||||
kwargs['bot'] = self
|
|
||||||
|
|
||||||
if self.threaded:
|
if self.threaded:
|
||||||
self.worker_pool.put(task, *args, **kwargs)
|
self.worker_pool.put(task, *args, **kwargs)
|
||||||
else:
|
else:
|
||||||
|
@ -4791,8 +4786,14 @@ class TeleBot:
|
||||||
if not isinstance(regexp, str):
|
if not isinstance(regexp, str):
|
||||||
logger.error(f"{method_name}: Regexp filter should be string. Not able to use the supplied type.")
|
logger.error(f"{method_name}: Regexp filter should be string. Not able to use the supplied type.")
|
||||||
|
|
||||||
def message_handler(self, commands: Optional[List[str]]=None, regexp: Optional[str]=None, func: Optional[Callable]=None,
|
def message_handler(
|
||||||
content_types: Optional[List[str]]=None, chat_types: Optional[List[str]]=None, **kwargs):
|
self,
|
||||||
|
commands: Optional[List[str]]=None,
|
||||||
|
regexp: Optional[str]=None,
|
||||||
|
func: Optional[Callable]=None,
|
||||||
|
content_types: Optional[List[str]]=None,
|
||||||
|
chat_types: Optional[List[str]]=None,
|
||||||
|
**kwargs):
|
||||||
"""
|
"""
|
||||||
Handles New incoming message of any kind - text, photo, sticker, etc.
|
Handles New incoming message of any kind - text, photo, sticker, etc.
|
||||||
As a parameter to the decorator function, it passes :class:`telebot.types.Message` object.
|
As a parameter to the decorator function, it passes :class:`telebot.types.Message` object.
|
||||||
|
@ -5890,7 +5891,7 @@ class TeleBot:
|
||||||
|
|
||||||
def _run_middlewares_and_handler(self, message, handlers, middlewares, update_type):
|
def _run_middlewares_and_handler(self, message, handlers, middlewares, update_type):
|
||||||
"""
|
"""
|
||||||
This class is made to run handlers and middlewares in queue.
|
This method is made to run handlers and middlewares in queue.
|
||||||
|
|
||||||
:param message: received message (update part) to process with handlers and/or middlewares
|
:param message: received message (update part) to process with handlers and/or middlewares
|
||||||
:param handlers: all created handlers (not filtered)
|
:param handlers: all created handlers (not filtered)
|
||||||
|
@ -5900,10 +5901,14 @@ class TeleBot:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not self.use_class_middlewares:
|
if not self.use_class_middlewares:
|
||||||
for message_handler in handlers:
|
if handlers:
|
||||||
if self._test_message_handler(message_handler, message):
|
for handler in handlers:
|
||||||
self._exec_task(message_handler['function'], message, pass_bot=message_handler['pass_bot'], task_type='handler')
|
if self._test_message_handler(handler, message):
|
||||||
break
|
if handler.get('pass_bot', False):
|
||||||
|
handler['function'](message, bot = self)
|
||||||
|
else:
|
||||||
|
handler['function'](message)
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
data = {}
|
data = {}
|
||||||
params =[]
|
params =[]
|
||||||
|
@ -5962,7 +5967,7 @@ class TeleBot:
|
||||||
if self.exception_handler:
|
if self.exception_handler:
|
||||||
self.exception_handler.handle(e)
|
self.exception_handler.handle(e)
|
||||||
else:
|
else:
|
||||||
logging.error(str(e))
|
logger.error(str(e))
|
||||||
logger.debug("Exception traceback:\n%s", traceback.format_exc())
|
logger.debug("Exception traceback:\n%s", traceback.format_exc())
|
||||||
|
|
||||||
if middlewares:
|
if middlewares:
|
||||||
|
|
|
@ -358,6 +358,16 @@ class AsyncTeleBot:
|
||||||
await asyncio.gather(*tasks)
|
await asyncio.gather(*tasks)
|
||||||
|
|
||||||
async def _run_middlewares_and_handlers(self, message, handlers, middlewares, update_type):
|
async def _run_middlewares_and_handlers(self, message, handlers, middlewares, update_type):
|
||||||
|
"""
|
||||||
|
This method is made to run handlers and middlewares in queue.
|
||||||
|
|
||||||
|
:param message: received message (update part) to process with handlers and/or middlewares
|
||||||
|
:param handlers: all created handlers (not filtered)
|
||||||
|
:param middlewares: middlewares that should be executed (already filtered)
|
||||||
|
:param update_type: handler/update type (Update field name)
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
handler_error = None
|
handler_error = None
|
||||||
data = {}
|
data = {}
|
||||||
skip_handlers = False
|
skip_handlers = False
|
||||||
|
|
Loading…
Reference in New Issue