mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Merge pull request #1623 from Badiboy/master
Fix exception with typed_middleware_handlers
This commit is contained in:
commit
92654ee970
@ -161,9 +161,9 @@ class TeleBot:
|
||||
}
|
||||
self.default_middleware_handlers = []
|
||||
if apihelper.ENABLE_MIDDLEWARE and use_class_middlewares:
|
||||
logger.warning(
|
||||
'You are using class based middlewares, but you have '
|
||||
'ENABLE_MIDDLEWARE set to True. This is not recommended.'
|
||||
self.typed_middleware_handlers = None
|
||||
logger.error(
|
||||
'You are using class based middlewares while having ENABLE_MIDDLEWARE set to True. This is not recommended.'
|
||||
)
|
||||
self.middlewares = [] if use_class_middlewares else None
|
||||
self.threaded = threaded
|
||||
@ -464,7 +464,7 @@ class TeleBot:
|
||||
new_chat_join_request = None
|
||||
|
||||
for update in updates:
|
||||
if apihelper.ENABLE_MIDDLEWARE:
|
||||
if apihelper.ENABLE_MIDDLEWARE and not self.use_class_middlewares:
|
||||
try:
|
||||
self.process_middlewares(update)
|
||||
except Exception as e:
|
||||
@ -595,16 +595,17 @@ class TeleBot:
|
||||
self._notify_command_handlers(self.chat_join_request_handlers, chat_join_request, 'chat_join_request')
|
||||
|
||||
def process_middlewares(self, update):
|
||||
for update_type, middlewares in self.typed_middleware_handlers.items():
|
||||
if getattr(update, update_type) is not None:
|
||||
for typed_middleware_handler in middlewares:
|
||||
try:
|
||||
typed_middleware_handler(self, getattr(update, update_type))
|
||||
except Exception as e:
|
||||
e.args = e.args + (f'Typed middleware handler "{typed_middleware_handler.__qualname__}"',)
|
||||
raise
|
||||
if self.typed_middleware_handlers:
|
||||
for update_type, middlewares in self.typed_middleware_handlers.items():
|
||||
if getattr(update, update_type) is not None:
|
||||
for typed_middleware_handler in middlewares:
|
||||
try:
|
||||
typed_middleware_handler(self, getattr(update, update_type))
|
||||
except Exception as e:
|
||||
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:
|
||||
try:
|
||||
default_middleware_handler(self, update)
|
||||
@ -3170,10 +3171,17 @@ class TeleBot:
|
||||
if not apihelper.ENABLE_MIDDLEWARE:
|
||||
raise RuntimeError("Middleware is not enabled. Use apihelper.ENABLE_MIDDLEWARE before initialising TeleBot.")
|
||||
|
||||
if update_types:
|
||||
if self.use_class_middlewares:
|
||||
logger.error("middleware_handler/register_middleware_handler/add_middleware_handler cannot be used with use_class_middlewares=True. Skipped.")
|
||||
return
|
||||
|
||||
added = False
|
||||
if update_types and self.typed_middleware_handlers:
|
||||
for update_type in update_types:
|
||||
self.typed_middleware_handlers[update_type].append(handler)
|
||||
else:
|
||||
if update_type in self.typed_middleware_handlers:
|
||||
added = True
|
||||
self.typed_middleware_handlers[update_type].append(handler)
|
||||
if not added:
|
||||
self.default_middleware_handlers.append(handler)
|
||||
|
||||
# function register_middleware_handler
|
||||
|
Loading…
Reference in New Issue
Block a user