mirror of
https://github.com/TeamPGM/pyrogram.git
synced 2024-11-16 20:59:29 +00:00
Don't break groups in case one handler raises an unhandled exception
The error is logged instead. Fixes #126
This commit is contained in:
parent
b79bd1ea83
commit
0162cf48c1
@ -90,43 +90,46 @@ class Dispatcher:
|
|||||||
|
|
||||||
def dispatch(self, update, users: dict = None, chats: dict = None, is_raw: bool = False):
|
def dispatch(self, update, users: dict = None, chats: dict = None, is_raw: bool = False):
|
||||||
for group in self.groups.values():
|
for group in self.groups.values():
|
||||||
for handler in group:
|
try:
|
||||||
if is_raw:
|
for handler in group:
|
||||||
if not isinstance(handler, RawUpdateHandler):
|
if is_raw:
|
||||||
continue
|
if not isinstance(handler, RawUpdateHandler):
|
||||||
|
|
||||||
args = (self.client, update, users, chats)
|
|
||||||
else:
|
|
||||||
message = (update.message
|
|
||||||
or update.channel_post
|
|
||||||
or update.edited_message
|
|
||||||
or update.edited_channel_post)
|
|
||||||
|
|
||||||
deleted_messages = (update.deleted_channel_posts
|
|
||||||
or update.deleted_messages)
|
|
||||||
|
|
||||||
callback_query = update.callback_query
|
|
||||||
|
|
||||||
if message and isinstance(handler, MessageHandler):
|
|
||||||
if not handler.check(message):
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
args = (self.client, message)
|
args = (self.client, update, users, chats)
|
||||||
elif deleted_messages and isinstance(handler, DeletedMessagesHandler):
|
|
||||||
if not handler.check(deleted_messages):
|
|
||||||
continue
|
|
||||||
|
|
||||||
args = (self.client, deleted_messages)
|
|
||||||
elif callback_query and isinstance(handler, CallbackQueryHandler):
|
|
||||||
if not handler.check(callback_query):
|
|
||||||
continue
|
|
||||||
|
|
||||||
args = (self.client, callback_query)
|
|
||||||
else:
|
else:
|
||||||
continue
|
message = (update.message
|
||||||
|
or update.channel_post
|
||||||
|
or update.edited_message
|
||||||
|
or update.edited_channel_post)
|
||||||
|
|
||||||
handler.callback(*args)
|
deleted_messages = (update.deleted_channel_posts
|
||||||
break
|
or update.deleted_messages)
|
||||||
|
|
||||||
|
callback_query = update.callback_query
|
||||||
|
|
||||||
|
if message and isinstance(handler, MessageHandler):
|
||||||
|
if not handler.check(message):
|
||||||
|
continue
|
||||||
|
|
||||||
|
args = (self.client, message)
|
||||||
|
elif deleted_messages and isinstance(handler, DeletedMessagesHandler):
|
||||||
|
if not handler.check(deleted_messages):
|
||||||
|
continue
|
||||||
|
|
||||||
|
args = (self.client, deleted_messages)
|
||||||
|
elif callback_query and isinstance(handler, CallbackQueryHandler):
|
||||||
|
if not handler.check(callback_query):
|
||||||
|
continue
|
||||||
|
|
||||||
|
args = (self.client, callback_query)
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
handler.callback(*args)
|
||||||
|
break
|
||||||
|
except Exception as e:
|
||||||
|
log.error(e, exc_info=True)
|
||||||
|
|
||||||
def update_worker(self):
|
def update_worker(self):
|
||||||
name = threading.current_thread().name
|
name = threading.current_thread().name
|
||||||
|
Loading…
Reference in New Issue
Block a user