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

Handle Poll update

This commit is contained in:
Alexander Tkachev
2020-03-09 17:25:54 +07:00
parent 12547efa08
commit d2f9c51a5a
2 changed files with 50 additions and 5 deletions

View File

@@ -167,6 +167,7 @@ class TeleBot:
self.callback_query_handlers = []
self.shipping_query_handlers = []
self.pre_checkout_query_handlers = []
self.poll_handlers = []
self.threaded = threaded
if self.threaded:
@@ -289,6 +290,7 @@ class TeleBot:
new_callback_querys = []
new_shipping_querys = []
new_pre_checkout_querys = []
new_polls = []
for update in updates:
if update.update_id > self.last_update_id:
@@ -311,6 +313,8 @@ class TeleBot:
new_shipping_querys.append(update.shipping_query)
if update.pre_checkout_query:
new_pre_checkout_querys.append(update.pre_checkout_query)
if update.poll:
new_polls.append(update.poll)
logger.debug('Received {0} new updates'.format(len(updates)))
if len(new_messages) > 0:
@@ -331,6 +335,8 @@ class TeleBot:
self.process_new_shipping_query(new_shipping_querys)
if len(new_pre_checkout_querys) > 0:
self.process_new_pre_checkout_query(new_pre_checkout_querys)
if len(new_polls) > 0:
self.process_new_poll(new_polls)
def process_new_messages(self, new_messages):
self._notify_next_handlers(new_messages)
@@ -362,6 +368,9 @@ class TeleBot:
def process_new_pre_checkout_query(self, pre_checkout_querys):
self._notify_command_handlers(self.pre_checkout_query_handlers, pre_checkout_querys)
def process_new_poll(self, polls):
self._notify_command_handlers(self.poll_handlers, polls)
def __notify_update(self, new_messages):
for listener in self.update_listener:
self._exec_task(listener, new_messages)
@@ -1755,6 +1764,28 @@ class TeleBot:
"""
self.pre_checkout_query_handlers.append(handler_dict)
def poll_handler(self, func, **kwargs):
"""
Poll request handler
:param func:
:param kwargs:
:return:
"""
def decorator(handler):
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
self.add_poll_handler(handler_dict)
return handler
return decorator
def add_poll_handler(self, handler_dict):
"""
Adds a poll request handler
:param handler_dict:
:return:
"""
self.poll_handlers.append(handler_dict)
def _test_message_handler(self, message_handler, message):
"""
Test message handler