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

Merge pull request #906 from daveusa31/master

Added ability to set default parse_mode in main TeleBot class.
This commit is contained in:
Badiboy 2020-07-04 22:29:32 +03:00 committed by GitHub
commit e9f925e14c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 70 additions and 52 deletions

View File

@ -85,15 +85,17 @@ class TeleBot:
""" """
def __init__( def __init__(
self, token, threaded=True, skip_pending=False, num_threads=2, self, token, parse_mode=None, threaded=True, skip_pending=False, num_threads=2,
next_step_backend=None, reply_backend=None next_step_backend=None, reply_backend=None
): ):
""" """
:param token: bot API token :param token: bot API token
:param parse_mode: default parse_mode
:return: Telebot object. :return: Telebot object.
""" """
self.token = token self.token = token
self.parse_mode = parse_mode
self.update_listener = [] self.update_listener = []
self.skip_pending = skip_pending self.skip_pending = skip_pending
@ -632,6 +634,8 @@ class TeleBot:
:param timeout: :param timeout:
:return: API reply. :return: API reply.
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_message(self.token, chat_id, text, disable_web_page_preview, reply_to_message_id, apihelper.send_message(self.token, chat_id, text, disable_web_page_preview, reply_to_message_id,
reply_markup, parse_mode, disable_notification, timeout)) reply_markup, parse_mode, disable_notification, timeout))
@ -689,6 +693,8 @@ class TeleBot:
:param reply_markup: :param reply_markup:
:return: API reply. :return: API reply.
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup, apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup,
parse_mode, disable_notification, timeout)) parse_mode, disable_notification, timeout))
@ -731,6 +737,8 @@ class TeleBot:
:param timeout: :param timeout:
:return: Message :return: Message
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_voice(self.token, chat_id, voice, caption, duration, reply_to_message_id, reply_markup, apihelper.send_voice(self.token, chat_id, voice, caption, duration, reply_to_message_id, reply_markup,
parse_mode, disable_notification, timeout)) parse_mode, disable_notification, timeout))
@ -749,6 +757,8 @@ class TeleBot:
:param timeout: :param timeout:
:return: API reply. :return: API reply.
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_data(self.token, chat_id, data, 'document', reply_to_message_id, reply_markup, apihelper.send_data(self.token, chat_id, data, 'document', reply_to_message_id, reply_markup,
parse_mode, disable_notification, timeout, caption=caption)) parse_mode, disable_notification, timeout, caption=caption))
@ -785,9 +795,11 @@ class TeleBot:
:param reply_markup: :param reply_markup:
:param disable_notification: :param disable_notification:
:param timeout: :param timeout:
:param thumb: :param thumb:
:return: :return:
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_video(self.token, chat_id, data, duration, caption, reply_to_message_id, reply_markup, apihelper.send_video(self.token, chat_id, data, duration, caption, reply_to_message_id, reply_markup,
parse_mode, supports_streaming, disable_notification, timeout, thumb)) parse_mode, supports_streaming, disable_notification, timeout, thumb))
@ -807,6 +819,8 @@ class TeleBot:
:param timeout: :param timeout:
:return: :return:
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
return types.Message.de_json( return types.Message.de_json(
apihelper.send_animation(self.token, chat_id, animation, duration, caption, reply_to_message_id, reply_markup, apihelper.send_animation(self.token, chat_id, animation, duration, caption, reply_to_message_id, reply_markup,
parse_mode, disable_notification, timeout)) parse_mode, disable_notification, timeout))
@ -1165,6 +1179,8 @@ class TeleBot:
:param reply_markup: :param reply_markup:
:return: :return:
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
result = apihelper.edit_message_text(self.token, text, chat_id, message_id, inline_message_id, parse_mode, result = apihelper.edit_message_text(self.token, text, chat_id, message_id, inline_message_id, parse_mode,
disable_web_page_preview, reply_markup) disable_web_page_preview, reply_markup)
if type(result) == bool: # if edit inline message return is bool not Message. if type(result) == bool: # if edit inline message return is bool not Message.
@ -1367,6 +1383,8 @@ class TeleBot:
:param reply_markup: :param reply_markup:
:return: :return:
""" """
parse_mode = self.parse_mode if not parse_mode else parse_mode
result = apihelper.edit_message_caption(self.token, caption, chat_id, message_id, inline_message_id, result = apihelper.edit_message_caption(self.token, caption, chat_id, message_id, inline_message_id,
parse_mode, reply_markup) parse_mode, reply_markup)
if type(result) == bool: if type(result) == bool:

View File

@ -25,67 +25,67 @@ thread_local = threading.local()
class WorkerThread(threading.Thread): class WorkerThread(threading.Thread):
count = 0 count = 0
def __init__(self, exception_callback=None, queue=None, name=None): def __init__(self, exception_callback=None, queue=None, name=None):
if not name: if not name:
name = "WorkerThread{0}".format(self.__class__.count + 1) name = "WorkerThread{0}".format(self.__class__.count + 1)
self.__class__.count += 1 self.__class__.count += 1
if not queue: if not queue:
queue = Queue.Queue() queue = Queue.Queue()
threading.Thread.__init__(self, name=name) threading.Thread.__init__(self, name=name)
self.queue = queue self.queue = queue
self.daemon = True self.daemon = True
self.received_task_event = threading.Event() self.received_task_event = threading.Event()
self.done_event = threading.Event() self.done_event = threading.Event()
self.exception_event = threading.Event() self.exception_event = threading.Event()
self.continue_event = threading.Event() self.continue_event = threading.Event()
self.exception_callback = exception_callback self.exception_callback = exception_callback
self.exc_info = None self.exc_info = None
self._running = True self._running = True
self.start() self.start()
def run(self): def run(self):
while self._running: while self._running:
try: try:
task, args, kwargs = self.queue.get(block=True, timeout=.5) task, args, kwargs = self.queue.get(block=True, timeout=.5)
self.continue_event.clear() self.continue_event.clear()
self.received_task_event.clear() self.received_task_event.clear()
self.done_event.clear() self.done_event.clear()
self.exception_event.clear() self.exception_event.clear()
logger.debug("Received task") logger.debug("Received task")
self.received_task_event.set() self.received_task_event.set()
task(*args, **kwargs) task(*args, **kwargs)
logger.debug("Task complete") logger.debug("Task complete")
self.done_event.set() self.done_event.set()
except Queue.Empty: except Queue.Empty:
pass pass
except Exception as e: except Exception as e:
logger.error(type(e).__name__ + " occurred, args=" + str(e.args) + "\n" + traceback.format_exc()) logger.error(type(e).__name__ + " occurred, args=" + str(e.args) + "\n" + traceback.format_exc())
self.exc_info = sys.exc_info() self.exc_info = sys.exc_info()
self.exception_event.set() self.exception_event.set()
if self.exception_callback: if self.exception_callback:
self.exception_callback(self, self.exc_info) self.exception_callback(self, self.exc_info)
self.continue_event.wait() self.continue_event.wait()
def put(self, task, *args, **kwargs): def put(self, task, *args, **kwargs):
self.queue.put((task, args, kwargs)) self.queue.put((task, args, kwargs))
def raise_exceptions(self): def raise_exceptions(self):
if self.exception_event.is_set(): if self.exception_event.is_set():
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2]) six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
def clear_exceptions(self): def clear_exceptions(self):
self.exception_event.clear() self.exception_event.clear()
self.continue_event.set() self.continue_event.set()
def stop(self): def stop(self):
self._running = False self._running = False
class ThreadPool: class ThreadPool: