1
0
mirror of https://github.com/eternnoir/pyTelegramBotAPI.git synced 2023-08-10 21:12:57 +03:00

Fix exception with typed_middleware_handlers

+ some additional checks
This commit is contained in:
Badiboy 2022-07-13 12:30:13 +03:00
parent 726b203724
commit b276bfacaf

View File

@ -161,6 +161,7 @@ class TeleBot:
} }
self.default_middleware_handlers = [] self.default_middleware_handlers = []
if apihelper.ENABLE_MIDDLEWARE and use_class_middlewares: if apihelper.ENABLE_MIDDLEWARE and use_class_middlewares:
self.typed_middleware_handlers = {}
logger.warning( logger.warning(
'You are using class based middlewares, but you have ' 'You are using class based middlewares, but you have '
'ENABLE_MIDDLEWARE set to True. This is not recommended.' 'ENABLE_MIDDLEWARE set to True. This is not recommended.'
@ -595,16 +596,17 @@ class TeleBot:
self._notify_command_handlers(self.chat_join_request_handlers, chat_join_request, 'chat_join_request') self._notify_command_handlers(self.chat_join_request_handlers, chat_join_request, 'chat_join_request')
def process_middlewares(self, update): def process_middlewares(self, update):
for update_type, middlewares in self.typed_middleware_handlers.items(): if self.typed_middleware_handlers:
if getattr(update, update_type) is not None: for update_type, middlewares in self.typed_middleware_handlers.items():
for typed_middleware_handler in middlewares: if getattr(update, update_type) is not None:
try: for typed_middleware_handler in middlewares:
typed_middleware_handler(self, getattr(update, update_type)) try:
except Exception as e: typed_middleware_handler(self, getattr(update, update_type))
e.args = e.args + (f'Typed middleware handler "{typed_middleware_handler.__qualname__}"',) except Exception as e:
raise e.args = e.args + (f'Typed middleware handler "{typed_middleware_handler.__qualname__}"',)
raise
if len(self.default_middleware_handlers) > 0: if self.default_middleware_handlers:
for default_middleware_handler in self.default_middleware_handlers: for default_middleware_handler in self.default_middleware_handlers:
try: try:
default_middleware_handler(self, update) default_middleware_handler(self, update)
@ -3170,10 +3172,13 @@ class TeleBot:
if not apihelper.ENABLE_MIDDLEWARE: if not apihelper.ENABLE_MIDDLEWARE:
raise RuntimeError("Middleware is not enabled. Use apihelper.ENABLE_MIDDLEWARE before initialising TeleBot.") raise RuntimeError("Middleware is not enabled. Use apihelper.ENABLE_MIDDLEWARE before initialising TeleBot.")
if update_types: added = False
if update_types and self.typed_middleware_handlers:
for update_type in update_types: for update_type in update_types:
self.typed_middleware_handlers[update_type].append(handler) if update_type in self.typed_middleware_handlers:
else: added = True
self.typed_middleware_handlers[update_type].append(handler)
if not added:
self.default_middleware_handlers.append(handler) self.default_middleware_handlers.append(handler)
# function register_middleware_handler # function register_middleware_handler