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

Update __init__.py

added handlers for `my_chat_member` and `chat_member`
This commit is contained in:
SwissCorePy 2021-06-23 16:10:48 +02:00
parent 65cf841015
commit 4554cb969f

View File

@ -155,6 +155,8 @@ class TeleBot:
self.pre_checkout_query_handlers = [] self.pre_checkout_query_handlers = []
self.poll_handlers = [] self.poll_handlers = []
self.poll_answer_handlers = [] self.poll_answer_handlers = []
self.my_chat_member_handlers = []
self.chat_member_handlers = []
if apihelper.ENABLE_MIDDLEWARE: if apihelper.ENABLE_MIDDLEWARE:
self.typed_middleware_handlers = { self.typed_middleware_handlers = {
@ -168,6 +170,9 @@ class TeleBot:
'shipping_query': [], 'shipping_query': [],
'pre_checkout_query': [], 'pre_checkout_query': [],
'poll': [], 'poll': [],
'poll_answer': [],
'my_chat_member': [],
'chat_member': []
} }
self.default_middleware_handlers = [] self.default_middleware_handlers = []
@ -355,6 +360,7 @@ class TeleBot:
logger.debug('Skipped {0} pending messages'.format(self.__skip_updates())) logger.debug('Skipped {0} pending messages'.format(self.__skip_updates()))
self.skip_pending = False self.skip_pending = False
updates = self.get_updates(offset=(self.last_update_id + 1), updates = self.get_updates(offset=(self.last_update_id + 1),
allowed_updates=util.allowed_updates,
timeout=timeout, long_polling_timeout=long_polling_timeout) timeout=timeout, long_polling_timeout=long_polling_timeout)
self.process_new_updates(updates) self.process_new_updates(updates)
@ -374,6 +380,8 @@ class TeleBot:
new_pre_checkout_queries = None new_pre_checkout_queries = None
new_polls = None new_polls = None
new_poll_answers = None new_poll_answers = None
new_my_chat_members = None
new_chat_members = None
for update in updates: for update in updates:
if apihelper.ENABLE_MIDDLEWARE: if apihelper.ENABLE_MIDDLEWARE:
@ -422,6 +430,12 @@ class TeleBot:
if update.poll_answer: if update.poll_answer:
if new_poll_answers is None: new_poll_answers = [] if new_poll_answers is None: new_poll_answers = []
new_poll_answers.append(update.poll_answer) new_poll_answers.append(update.poll_answer)
if update.my_chat_member:
if new_my_chat_members is None: new_my_chat_members = []
new_my_chat_members.append(update.my_chat_member)
if update.chat_member:
if new_chat_members is None: new_chat_members = []
new_chat_members.append(update.chat_member)
if new_messages: if new_messages:
self.process_new_messages(new_messages) self.process_new_messages(new_messages)
@ -445,6 +459,10 @@ class TeleBot:
self.process_new_poll(new_polls) self.process_new_poll(new_polls)
if new_poll_answers: if new_poll_answers:
self.process_new_poll_answer(new_poll_answers) self.process_new_poll_answer(new_poll_answers)
if new_my_chat_members:
self.process_new_my_chat_member(new_my_chat_members)
if new_chat_members:
self.process_new_chat_member(new_chat_members)
def process_new_messages(self, new_messages): def process_new_messages(self, new_messages):
self._notify_next_handlers(new_messages) self._notify_next_handlers(new_messages)
@ -482,6 +500,12 @@ class TeleBot:
def process_new_poll_answer(self, poll_answers): def process_new_poll_answer(self, poll_answers):
self._notify_command_handlers(self.poll_answer_handlers, poll_answers) self._notify_command_handlers(self.poll_answer_handlers, poll_answers)
def process_new_my_chat_member(self, my_chat_members):
self._notify_command_handlers(self.my_chat_member_handlers, my_chat_members)
def process_new_chat_member(self, chat_members):
self._notify_command_handlers(self.chat_member_handlers, chat_members)
def process_middlewares(self, update): def process_middlewares(self, update):
for update_type, middlewares in self.typed_middleware_handlers.items(): for update_type, middlewares in self.typed_middleware_handlers.items():
if getattr(update, update_type) is not None: if getattr(update, update_type) is not None:
@ -2666,6 +2690,53 @@ class TeleBot:
""" """
self.poll_answer_handlers.append(handler_dict) self.poll_answer_handlers.append(handler_dict)
def my_chat_member_handler(self, func=None, **kwargs):
"""
my_chat_member handler
:param func:
:param kwargs:
:return:
"""
def decorator(handler):
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
self.add_my_chat_member_handler(handler_dict)
return handler
return decorator
def add_my_chat_member_handler(self, handler_dict):
"""
Adds a my_chat_member handler
:param handler_dict:
:return:
"""
self.my_chat_member_handlers.append(handler_dict)
def chat_member_handler(self, func=None, **kwargs):
"""
chat_member handler
:param func:
:param kwargs:
:return:
"""
def decorator(handler):
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
self.add_chat_member_handler(handler_dict)
return handler
return decorator
def add_chat_member_handler(self, handler_dict):
"""
Adds a chat_member handler
:param handler_dict:
:return:
"""
self.chat_member_handlers.append(handler_dict)
def _test_message_handler(self, message_handler, message): def _test_message_handler(self, message_handler, message):
""" """
Test message handler Test message handler