mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Design updates from #711
Significant design updated from https://github.com/eternnoir/pyTelegramBotAPI/pull/711
This commit is contained in:
parent
9b279dc562
commit
760ea5a2f0
@ -105,15 +105,15 @@ def msg_image_select(m):
|
|||||||
# for some reason the 'upload_photo' status isn't quite working (doesn't show at all)
|
# for some reason the 'upload_photo' status isn't quite working (doesn't show at all)
|
||||||
bot.send_chat_action(cid, 'typing')
|
bot.send_chat_action(cid, 'typing')
|
||||||
|
|
||||||
if text == "cock": # send the appropriate image based on the reply to the "/getImage" command
|
if text == 'Mickey': # send the appropriate image based on the reply to the "/getImage" command
|
||||||
bot.send_photo(cid, open('rooster.jpg', 'rb'),
|
bot.send_photo(cid, open('rooster.jpg', 'rb'),
|
||||||
reply_markup=hideBoard) # send file and hide keyboard, after image is sent
|
reply_markup=hideBoard) # send file and hide keyboard, after image is sent
|
||||||
userStep[cid] = 0 # reset the users step back to 0
|
userStep[cid] = 0 # reset the users step back to 0
|
||||||
elif text == "pussy":
|
elif text == 'Minnie':
|
||||||
bot.send_photo(cid, open('kitten.jpg', 'rb'), reply_markup=hideBoard)
|
bot.send_photo(cid, open('kitten.jpg', 'rb'), reply_markup=hideBoard)
|
||||||
userStep[cid] = 0
|
userStep[cid] = 0
|
||||||
else:
|
else:
|
||||||
bot.send_message(cid, "Don't type crap, if I give you a predefined keyboard!")
|
bot.send_message(cid, "Please, use the predefined keyboard!")
|
||||||
bot.send_message(cid, "Please try again")
|
bot.send_message(cid, "Please try again")
|
||||||
|
|
||||||
|
|
||||||
|
1
setup.py
1
setup.py
@ -24,7 +24,6 @@ setup(name='pyTelegramBotAPI',
|
|||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 5 - Production/Stable',
|
'Development Status :: 5 - Production/Stable',
|
||||||
'Programming Language :: Python :: 2',
|
'Programming Language :: Python :: 2',
|
||||||
'Programming Language :: Python :: 2.6',
|
|
||||||
'Programming Language :: Python :: 2.7',
|
'Programming Language :: Python :: 2.7',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
'Environment :: Console',
|
'Environment :: Console',
|
||||||
|
@ -396,7 +396,7 @@ class TeleBot:
|
|||||||
def __threaded_polling(self, none_stop=False, interval=0, timeout=3):
|
def __threaded_polling(self, none_stop=False, interval=0, timeout=3):
|
||||||
logger.info('Started polling.')
|
logger.info('Started polling.')
|
||||||
self.__stop_polling.clear()
|
self.__stop_polling.clear()
|
||||||
error_interval = .25
|
error_interval = 0.25
|
||||||
|
|
||||||
polling_thread = util.WorkerThread(name="PollingThread")
|
polling_thread = util.WorkerThread(name="PollingThread")
|
||||||
or_event = util.OrEvent(
|
or_event = util.OrEvent(
|
||||||
@ -415,7 +415,7 @@ class TeleBot:
|
|||||||
polling_thread.raise_exceptions()
|
polling_thread.raise_exceptions()
|
||||||
self.worker_pool.raise_exceptions()
|
self.worker_pool.raise_exceptions()
|
||||||
|
|
||||||
error_interval = .25
|
error_interval = 0.25
|
||||||
except apihelper.ApiException as e:
|
except apihelper.ApiException as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
if not none_stop:
|
if not none_stop:
|
||||||
@ -438,12 +438,12 @@ class TeleBot:
|
|||||||
def __non_threaded_polling(self, none_stop=False, interval=0, timeout=3):
|
def __non_threaded_polling(self, none_stop=False, interval=0, timeout=3):
|
||||||
logger.info('Started polling.')
|
logger.info('Started polling.')
|
||||||
self.__stop_polling.clear()
|
self.__stop_polling.clear()
|
||||||
error_interval = .25
|
error_interval = 0.25
|
||||||
|
|
||||||
while not self.__stop_polling.wait(interval):
|
while not self.__stop_polling.wait(interval):
|
||||||
try:
|
try:
|
||||||
self.__retrieve_updates(timeout)
|
self.__retrieve_updates(timeout)
|
||||||
error_interval = .25
|
error_interval = 0.25
|
||||||
except apihelper.ApiException as e:
|
except apihelper.ApiException as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
if not none_stop:
|
if not none_stop:
|
||||||
@ -645,12 +645,15 @@ class TeleBot:
|
|||||||
Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .mp3 format.
|
Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .mp3 format.
|
||||||
:param chat_id:Unique identifier for the message recipient
|
:param chat_id:Unique identifier for the message recipient
|
||||||
:param audio:Audio file to send.
|
:param audio:Audio file to send.
|
||||||
|
:param caption:
|
||||||
:param duration:Duration of the audio in seconds
|
:param duration:Duration of the audio in seconds
|
||||||
:param performer:Performer
|
:param performer:Performer
|
||||||
:param title:Track name
|
:param title:Track name
|
||||||
:param parse_mode
|
|
||||||
:param reply_to_message_id:If the message is a reply, ID of the original message
|
:param reply_to_message_id:If the message is a reply, ID of the original message
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
|
:param parse_mode
|
||||||
|
:param disable_notification:
|
||||||
|
:param timeout:
|
||||||
:return: Message
|
:return: Message
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -663,10 +666,13 @@ class TeleBot:
|
|||||||
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
|
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message.
|
||||||
:param chat_id:Unique identifier for the message recipient.
|
:param chat_id:Unique identifier for the message recipient.
|
||||||
:param voice:
|
:param voice:
|
||||||
|
:param caption:
|
||||||
:param duration:Duration of sent audio in seconds
|
:param duration:Duration of sent audio in seconds
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
:param parse_mode
|
:param parse_mode
|
||||||
|
:param disable_notification:
|
||||||
|
:param timeout:
|
||||||
:return: Message
|
:return: Message
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -680,9 +686,11 @@ class TeleBot:
|
|||||||
:param chat_id:
|
:param chat_id:
|
||||||
:param data:
|
:param data:
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
|
:param caption:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
:param parse_mode:
|
:param parse_mode:
|
||||||
:param disable_notification:
|
:param disable_notification:
|
||||||
|
:param timeout:
|
||||||
:return: API reply.
|
:return: API reply.
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -697,6 +705,8 @@ class TeleBot:
|
|||||||
:param data:
|
:param data:
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
|
:param disable_notification: to disable the notification
|
||||||
|
:param timeout: timeout
|
||||||
:return: API reply.
|
:return: API reply.
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -715,6 +725,8 @@ class TeleBot:
|
|||||||
:param supports_streaming:
|
:param supports_streaming:
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
|
:param disable_notification:
|
||||||
|
:param timeout:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -748,6 +760,8 @@ class TeleBot:
|
|||||||
:param length: Integer : Video width and height, Can't be None and should be in range of (0, 640)
|
:param length: Integer : Video width and height, Can't be None and should be in range of (0, 640)
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
|
:param disable_notification:
|
||||||
|
:param timeout:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -779,6 +793,7 @@ class TeleBot:
|
|||||||
:param live_period
|
:param live_period
|
||||||
:param reply_to_message_id:
|
:param reply_to_message_id:
|
||||||
:param reply_markup:
|
:param reply_markup:
|
||||||
|
:param disable_notification:
|
||||||
:return: API reply.
|
:return: API reply.
|
||||||
"""
|
"""
|
||||||
return types.Message.de_json(
|
return types.Message.de_json(
|
||||||
@ -866,6 +881,12 @@ class TeleBot:
|
|||||||
return apihelper.kick_chat_member(self.token, chat_id, user_id, until_date)
|
return apihelper.kick_chat_member(self.token, chat_id, user_id, until_date)
|
||||||
|
|
||||||
def unban_chat_member(self, chat_id, user_id):
|
def unban_chat_member(self, chat_id, user_id):
|
||||||
|
"""
|
||||||
|
Removes member from the ban
|
||||||
|
:param chat_id:
|
||||||
|
:param user_id:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return apihelper.unban_chat_member(self.token, chat_id, user_id)
|
return apihelper.unban_chat_member(self.token, chat_id, user_id)
|
||||||
|
|
||||||
def restrict_chat_member(self, chat_id, user_id, until_date=None, can_send_messages=None,
|
def restrict_chat_member(self, chat_id, user_id, until_date=None, can_send_messages=None,
|
||||||
@ -1012,6 +1033,17 @@ class TeleBot:
|
|||||||
|
|
||||||
def edit_message_text(self, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None,
|
def edit_message_text(self, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None,
|
||||||
disable_web_page_preview=None, reply_markup=None):
|
disable_web_page_preview=None, reply_markup=None):
|
||||||
|
"""
|
||||||
|
Use this method to edit text and game messages.
|
||||||
|
:param text:
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:param parse_mode:
|
||||||
|
:param disable_web_page_preview:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
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.
|
||||||
@ -1019,12 +1051,29 @@ class TeleBot:
|
|||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
def edit_message_media(self, media, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
|
def edit_message_media(self, media, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
|
||||||
|
"""
|
||||||
|
Use this method to edit animation, audio, document, photo, or video messages. If a message is a part of a message album, then it can be edited only to a photo or a video. Otherwise, message type can be changed arbitrarily. When inline message is edited, new file can't be uploaded. Use previously uploaded file via its file_id or specify a URL.
|
||||||
|
:param media:
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.edit_message_media(self.token, media, chat_id, message_id, inline_message_id, reply_markup)
|
result = apihelper.edit_message_media(self.token, media, chat_id, message_id, inline_message_id, 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.
|
||||||
return result
|
return result
|
||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
def edit_message_reply_markup(self, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
|
def edit_message_reply_markup(self, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
|
||||||
|
"""
|
||||||
|
Use this method to edit only the reply markup of messages.
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.edit_message_reply_markup(self.token, chat_id, message_id, inline_message_id, reply_markup)
|
result = apihelper.edit_message_reply_markup(self.token, chat_id, message_id, inline_message_id, reply_markup)
|
||||||
if type(result) == bool:
|
if type(result) == bool:
|
||||||
return result
|
return result
|
||||||
@ -1032,12 +1081,32 @@ class TeleBot:
|
|||||||
|
|
||||||
def send_game(self, chat_id, game_short_name, disable_notification=None, reply_to_message_id=None,
|
def send_game(self, chat_id, game_short_name, disable_notification=None, reply_to_message_id=None,
|
||||||
reply_markup=None):
|
reply_markup=None):
|
||||||
|
"""
|
||||||
|
Used to send the game
|
||||||
|
:param chat_id:
|
||||||
|
:param game_short_name:
|
||||||
|
:param disable_notification:
|
||||||
|
:param reply_to_message_id:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.send_game(self.token, chat_id, game_short_name, disable_notification, reply_to_message_id,
|
result = apihelper.send_game(self.token, chat_id, game_short_name, disable_notification, reply_to_message_id,
|
||||||
reply_markup)
|
reply_markup)
|
||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
def set_game_score(self, user_id, score, force=None, chat_id=None, message_id=None, inline_message_id=None,
|
def set_game_score(self, user_id, score, force=None, chat_id=None, message_id=None, inline_message_id=None,
|
||||||
edit_message=None):
|
edit_message=None):
|
||||||
|
"""
|
||||||
|
Sets the value of points in the game to a specific user
|
||||||
|
:param user_id:
|
||||||
|
:param score:
|
||||||
|
:param force:
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:param edit_message:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.set_game_score(self.token, user_id, score, force, chat_id, message_id, inline_message_id,
|
result = apihelper.set_game_score(self.token, user_id, score, force, chat_id, message_id, inline_message_id,
|
||||||
edit_message)
|
edit_message)
|
||||||
if type(result) == bool:
|
if type(result) == bool:
|
||||||
@ -1045,6 +1114,14 @@ class TeleBot:
|
|||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
def get_game_high_scores(self, user_id, chat_id=None, message_id=None, inline_message_id=None):
|
def get_game_high_scores(self, user_id, chat_id=None, message_id=None, inline_message_id=None):
|
||||||
|
"""
|
||||||
|
Gets top points and game play
|
||||||
|
:param user_id:
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.get_game_high_scores(self.token, user_id, chat_id, message_id, inline_message_id)
|
result = apihelper.get_game_high_scores(self.token, user_id, chat_id, message_id, inline_message_id)
|
||||||
ret = []
|
ret = []
|
||||||
for r in result:
|
for r in result:
|
||||||
@ -1056,6 +1133,31 @@ class TeleBot:
|
|||||||
need_name=None, need_phone_number=None, need_email=None, need_shipping_address=None,
|
need_name=None, need_phone_number=None, need_email=None, need_shipping_address=None,
|
||||||
is_flexible=None, disable_notification=None, reply_to_message_id=None, reply_markup=None,
|
is_flexible=None, disable_notification=None, reply_to_message_id=None, reply_markup=None,
|
||||||
provider_data=None):
|
provider_data=None):
|
||||||
|
"""
|
||||||
|
Sends invoice
|
||||||
|
:param chat_id:
|
||||||
|
:param title:
|
||||||
|
:param description:
|
||||||
|
:param invoice_payload:
|
||||||
|
:param provider_token:
|
||||||
|
:param currency:
|
||||||
|
:param prices:
|
||||||
|
:param start_parameter:
|
||||||
|
:param photo_url:
|
||||||
|
:param photo_size:
|
||||||
|
:param photo_width:
|
||||||
|
:param photo_height:
|
||||||
|
:param need_name:
|
||||||
|
:param need_phone_number:
|
||||||
|
:param need_email:
|
||||||
|
:param need_shipping_address:
|
||||||
|
:param is_flexible:
|
||||||
|
:param disable_notification:
|
||||||
|
:param reply_to_message_id:
|
||||||
|
:param reply_markup:
|
||||||
|
:param provider_data:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
result = apihelper.send_invoice(self.token, chat_id, title, description, invoice_payload, provider_token,
|
result = apihelper.send_invoice(self.token, chat_id, title, description, invoice_payload, provider_token,
|
||||||
currency, prices, start_parameter, photo_url, photo_size, photo_width,
|
currency, prices, start_parameter, photo_url, photo_size, photo_width,
|
||||||
photo_height,
|
photo_height,
|
||||||
@ -1064,19 +1166,59 @@ class TeleBot:
|
|||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
def send_poll(self, chat_id, poll, disable_notifications=False, reply_to_message=None, reply_markup=None):
|
def send_poll(self, chat_id, poll, disable_notifications=False, reply_to_message=None, reply_markup=None):
|
||||||
|
"""
|
||||||
|
Sends poll
|
||||||
|
:param chat_id:
|
||||||
|
:param poll:
|
||||||
|
:param disable_notifications:
|
||||||
|
:param reply_to_message:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return types.Message.de_json(apihelper.send_poll(self.token, chat_id, poll.question, poll.options, disable_notifications, reply_to_message, reply_markup))
|
return types.Message.de_json(apihelper.send_poll(self.token, chat_id, poll.question, poll.options, disable_notifications, reply_to_message, reply_markup))
|
||||||
|
|
||||||
def stop_poll(self, chat_id, message_id):
|
def stop_poll(self, chat_id, message_id):
|
||||||
|
"""
|
||||||
|
Stops poll
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return types.Poll.de_json(apihelper.stop_poll(self.token, chat_id, message_id))
|
return types.Poll.de_json(apihelper.stop_poll(self.token, chat_id, message_id))
|
||||||
|
|
||||||
def answer_shipping_query(self, shipping_query_id, ok, shipping_options=None, error_message=None):
|
def answer_shipping_query(self, shipping_query_id, ok, shipping_options=None, error_message=None):
|
||||||
|
"""
|
||||||
|
Asks for an answer to a shipping question
|
||||||
|
:param shipping_query_id:
|
||||||
|
:param ok:
|
||||||
|
:param shipping_options:
|
||||||
|
:param error_message:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return apihelper.answer_shipping_query(self.token, shipping_query_id, ok, shipping_options, error_message)
|
return apihelper.answer_shipping_query(self.token, shipping_query_id, ok, shipping_options, error_message)
|
||||||
|
|
||||||
def answer_pre_checkout_query(self, pre_checkout_query_id, ok, error_message=None):
|
def answer_pre_checkout_query(self, pre_checkout_query_id, ok, error_message=None):
|
||||||
|
"""
|
||||||
|
Response to a request for pre-inspection
|
||||||
|
:param pre_checkout_query_id:
|
||||||
|
:param ok:
|
||||||
|
:param error_message:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return apihelper.answer_pre_checkout_query(self.token, pre_checkout_query_id, ok, error_message)
|
return apihelper.answer_pre_checkout_query(self.token, pre_checkout_query_id, ok, error_message)
|
||||||
|
|
||||||
def edit_message_caption(self, caption, chat_id=None, message_id=None, inline_message_id=None,
|
def edit_message_caption(self, caption, chat_id=None, message_id=None, inline_message_id=None,
|
||||||
parse_mode=None, reply_markup=None):
|
parse_mode=None, reply_markup=None):
|
||||||
|
"""
|
||||||
|
Use this method to edit captions of messages
|
||||||
|
:param caption:
|
||||||
|
:param chat_id:
|
||||||
|
:param message_id:
|
||||||
|
:param inline_message_id:
|
||||||
|
:param parse_mode:
|
||||||
|
:param reply_markup:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
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:
|
||||||
@ -1086,6 +1228,10 @@ class TeleBot:
|
|||||||
def reply_to(self, message, text, **kwargs):
|
def reply_to(self, message, text, **kwargs):
|
||||||
"""
|
"""
|
||||||
Convenience function for `send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs)`
|
Convenience function for `send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs)`
|
||||||
|
:param message:
|
||||||
|
:param text:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
"""
|
"""
|
||||||
return self.send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs)
|
return self.send_message(message.chat.id, text, reply_to_message_id=message.message_id, **kwargs)
|
||||||
|
|
||||||
@ -1114,23 +1260,12 @@ class TeleBot:
|
|||||||
:param callback_query_id:
|
:param callback_query_id:
|
||||||
:param text:
|
:param text:
|
||||||
:param show_alert:
|
:param show_alert:
|
||||||
|
:param url:
|
||||||
|
:param cache_time:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
return apihelper.answer_callback_query(self.token, callback_query_id, text, show_alert, url, cache_time)
|
return apihelper.answer_callback_query(self.token, callback_query_id, text, show_alert, url, cache_time)
|
||||||
|
|
||||||
# def send_sticker(self, chat_id, sticker, disable_notification=None, reply_to_message_id=None, reply_markup=None):
|
|
||||||
# """
|
|
||||||
# Use this method to send .webp stickers. On success, the sent Message is returned.
|
|
||||||
# :param chat_id:
|
|
||||||
# :param sticker:
|
|
||||||
# :param disable_notification:
|
|
||||||
# :param reply_to_message_id:
|
|
||||||
# :param reply_markup:
|
|
||||||
# :return:
|
|
||||||
# """
|
|
||||||
# result = apihelper.send_sticker(self.token, chat_id, sticker, disable_notification, reply_markup, reply_markup)
|
|
||||||
# return types.Message.de_json(result)
|
|
||||||
|
|
||||||
def get_sticker_set(self, name):
|
def get_sticker_set(self, name):
|
||||||
"""
|
"""
|
||||||
Use this method to get a sticker set. On success, a StickerSet object is returned.
|
Use this method to get a sticker set. On success, a StickerSet object is returned.
|
||||||
@ -1228,6 +1363,11 @@ class TeleBot:
|
|||||||
self.reply_saver.start_save_timer()
|
self.reply_saver.start_save_timer()
|
||||||
|
|
||||||
def _notify_reply_handlers(self, new_messages):
|
def _notify_reply_handlers(self, new_messages):
|
||||||
|
"""
|
||||||
|
Notify handlers of the answers
|
||||||
|
:param new_messages:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
for message in new_messages:
|
for message in new_messages:
|
||||||
if hasattr(message, "reply_to_message") and message.reply_to_message is not None:
|
if hasattr(message, "reply_to_message") and message.reply_to_message is not None:
|
||||||
reply_msg_id = message.reply_to_message.message_id
|
reply_msg_id = message.reply_to_message.message_id
|
||||||
@ -1313,6 +1453,11 @@ class TeleBot:
|
|||||||
self.reply_saver.start_save_timer()
|
self.reply_saver.start_save_timer()
|
||||||
|
|
||||||
def _notify_next_handlers(self, new_messages):
|
def _notify_next_handlers(self, new_messages):
|
||||||
|
"""
|
||||||
|
Description: TBD
|
||||||
|
:param new_messages:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(new_messages):
|
while i < len(new_messages):
|
||||||
message = new_messages[i]
|
message = new_messages[i]
|
||||||
@ -1332,12 +1477,18 @@ class TeleBot:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _build_handler_dict(handler, **filters):
|
def _build_handler_dict(handler, **filters):
|
||||||
|
"""
|
||||||
|
Builds a dictionary for a handler
|
||||||
|
:param handler:
|
||||||
|
:param filters:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
return {
|
return {
|
||||||
'function': handler,
|
'function': handler,
|
||||||
'filters' : filters
|
'filters' : filters
|
||||||
}
|
}
|
||||||
|
|
||||||
def message_handler(self, commands=None, regexp=None, func=None, content_types=['text'], **kwargs):
|
def message_handler(self, commands=None, regexp=None, func=None, content_types=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Message handler decorator.
|
Message handler decorator.
|
||||||
This decorator can be used to decorate functions that must handle certain types of messages.
|
This decorator can be used to decorate functions that must handle certain types of messages.
|
||||||
@ -1367,6 +1518,9 @@ class TeleBot:
|
|||||||
:param content_types: This commands' supported content types. Must be a list. Defaults to ['text'].
|
:param content_types: This commands' supported content types. Must be a list. Defaults to ['text'].
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if content_types is None:
|
||||||
|
content_types = ["text"]
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler,
|
handler_dict = self._build_handler_dict(handler,
|
||||||
commands=commands,
|
commands=commands,
|
||||||
@ -1382,9 +1536,27 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_message_handler(self, handler_dict):
|
def add_message_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds a message handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.message_handlers.append(handler_dict)
|
self.message_handlers.append(handler_dict)
|
||||||
|
|
||||||
def edited_message_handler(self, commands=None, regexp=None, func=None, content_types=['text'], **kwargs):
|
def edited_message_handler(self, commands=None, regexp=None, func=None, content_types=None, **kwargs):
|
||||||
|
"""
|
||||||
|
Edit message handler decorator
|
||||||
|
:param commands:
|
||||||
|
:param regexp:
|
||||||
|
:param func:
|
||||||
|
:param content_types:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if content_types is None:
|
||||||
|
content_types = ["text"]
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler,
|
handler_dict = self._build_handler_dict(handler,
|
||||||
commands=commands,
|
commands=commands,
|
||||||
@ -1398,9 +1570,27 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_edited_message_handler(self, handler_dict):
|
def add_edited_message_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds the edit message handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.edited_message_handlers.append(handler_dict)
|
self.edited_message_handlers.append(handler_dict)
|
||||||
|
|
||||||
def channel_post_handler(self, commands=None, regexp=None, func=None, content_types=['text'], **kwargs):
|
def channel_post_handler(self, commands=None, regexp=None, func=None, content_types=None, **kwargs):
|
||||||
|
"""
|
||||||
|
Channel post handler decorator
|
||||||
|
:param commands:
|
||||||
|
:param regexp:
|
||||||
|
:param func:
|
||||||
|
:param content_types:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if content_types is None:
|
||||||
|
content_types = ["text"]
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler,
|
handler_dict = self._build_handler_dict(handler,
|
||||||
commands=commands,
|
commands=commands,
|
||||||
@ -1414,9 +1604,27 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_channel_post_handler(self, handler_dict):
|
def add_channel_post_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds channel post handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.channel_post_handlers.append(handler_dict)
|
self.channel_post_handlers.append(handler_dict)
|
||||||
|
|
||||||
def edited_channel_post_handler(self, commands=None, regexp=None, func=None, content_types=['text'], **kwargs):
|
def edited_channel_post_handler(self, commands=None, regexp=None, func=None, content_types=None, **kwargs):
|
||||||
|
"""
|
||||||
|
Edit channel post handler decorator
|
||||||
|
:param commands:
|
||||||
|
:param regexp:
|
||||||
|
:param func:
|
||||||
|
:param content_types:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if content_types is None:
|
||||||
|
content_types = ["text"]
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler,
|
handler_dict = self._build_handler_dict(handler,
|
||||||
commands=commands,
|
commands=commands,
|
||||||
@ -1430,9 +1638,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_edited_channel_post_handler(self, handler_dict):
|
def add_edited_channel_post_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds the edit channel post handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.edited_channel_post_handlers.append(handler_dict)
|
self.edited_channel_post_handlers.append(handler_dict)
|
||||||
|
|
||||||
def inline_handler(self, func, **kwargs):
|
def inline_handler(self, func, **kwargs):
|
||||||
|
"""
|
||||||
|
Inline call handler decorator
|
||||||
|
:param func:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_inline_handler(handler_dict)
|
self.add_inline_handler(handler_dict)
|
||||||
@ -1441,9 +1660,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_inline_handler(self, handler_dict):
|
def add_inline_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds inline call handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.inline_handlers.append(handler_dict)
|
self.inline_handlers.append(handler_dict)
|
||||||
|
|
||||||
def chosen_inline_handler(self, func, **kwargs):
|
def chosen_inline_handler(self, func, **kwargs):
|
||||||
|
"""
|
||||||
|
Description: TBD
|
||||||
|
:param func:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_chosen_inline_handler(handler_dict)
|
self.add_chosen_inline_handler(handler_dict)
|
||||||
@ -1452,9 +1682,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_chosen_inline_handler(self, handler_dict):
|
def add_chosen_inline_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Description: TBD
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.chosen_inline_handlers.append(handler_dict)
|
self.chosen_inline_handlers.append(handler_dict)
|
||||||
|
|
||||||
def callback_query_handler(self, func, **kwargs):
|
def callback_query_handler(self, func, **kwargs):
|
||||||
|
"""
|
||||||
|
Callback request handler decorator
|
||||||
|
:param func:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_callback_query_handler(handler_dict)
|
self.add_callback_query_handler(handler_dict)
|
||||||
@ -1463,9 +1704,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_callback_query_handler(self, handler_dict):
|
def add_callback_query_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds a callback request handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.callback_query_handlers.append(handler_dict)
|
self.callback_query_handlers.append(handler_dict)
|
||||||
|
|
||||||
def shipping_query_handler(self, func, **kwargs):
|
def shipping_query_handler(self, func, **kwargs):
|
||||||
|
"""
|
||||||
|
Shipping request handler
|
||||||
|
:param func:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_shipping_query_handler(handler_dict)
|
self.add_shipping_query_handler(handler_dict)
|
||||||
@ -1474,9 +1726,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_shipping_query_handler(self, handler_dict):
|
def add_shipping_query_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds a shipping request handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.shipping_query_handlers.append(handler_dict)
|
self.shipping_query_handlers.append(handler_dict)
|
||||||
|
|
||||||
def pre_checkout_query_handler(self, func, **kwargs):
|
def pre_checkout_query_handler(self, func, **kwargs):
|
||||||
|
"""
|
||||||
|
Pre-checkout request handler
|
||||||
|
:param func:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_pre_checkout_query_handler(handler_dict)
|
self.add_pre_checkout_query_handler(handler_dict)
|
||||||
@ -1485,9 +1748,20 @@ class TeleBot:
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
def add_pre_checkout_query_handler(self, handler_dict):
|
def add_pre_checkout_query_handler(self, handler_dict):
|
||||||
|
"""
|
||||||
|
Adds a pre-checkout request handler
|
||||||
|
:param handler_dict:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
self.pre_checkout_query_handlers.append(handler_dict)
|
self.pre_checkout_query_handlers.append(handler_dict)
|
||||||
|
|
||||||
def _test_message_handler(self, message_handler, message):
|
def _test_message_handler(self, message_handler, message):
|
||||||
|
"""
|
||||||
|
Test message handler
|
||||||
|
:param message_handler:
|
||||||
|
:param message:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
for filter, filter_value in six.iteritems(message_handler['filters']):
|
for filter, filter_value in six.iteritems(message_handler['filters']):
|
||||||
if filter_value is None:
|
if filter_value is None:
|
||||||
continue
|
continue
|
||||||
@ -1499,6 +1773,13 @@ class TeleBot:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _test_filter(filter, filter_value, message):
|
def _test_filter(filter, filter_value, message):
|
||||||
|
"""
|
||||||
|
Test filters
|
||||||
|
:param filter:
|
||||||
|
:param filter_value:
|
||||||
|
:param message:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
test_cases = {
|
test_cases = {
|
||||||
'content_types': lambda msg: msg.content_type in filter_value,
|
'content_types': lambda msg: msg.content_type in filter_value,
|
||||||
'regexp': lambda msg: msg.content_type == 'text' and re.search(filter_value, msg.text, re.IGNORECASE),
|
'regexp': lambda msg: msg.content_type == 'text' and re.search(filter_value, msg.text, re.IGNORECASE),
|
||||||
@ -1509,6 +1790,12 @@ class TeleBot:
|
|||||||
return test_cases.get(filter, lambda msg: False)(message)
|
return test_cases.get(filter, lambda msg: False)(message)
|
||||||
|
|
||||||
def _notify_command_handlers(self, handlers, new_messages):
|
def _notify_command_handlers(self, handlers, new_messages):
|
||||||
|
"""
|
||||||
|
Notifies command handlers
|
||||||
|
:param handlers:
|
||||||
|
:param new_messages:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
for message in new_messages:
|
for message in new_messages:
|
||||||
for message_handler in handlers:
|
for message_handler in handlers:
|
||||||
if self._test_message_handler(message_handler, message):
|
if self._test_message_handler(message_handler, message):
|
||||||
@ -1748,10 +2035,6 @@ class AsyncTeleBot(TeleBot):
|
|||||||
def answer_callback_query(self, *args, **kwargs):
|
def answer_callback_query(self, *args, **kwargs):
|
||||||
return TeleBot.answer_callback_query(self, *args, **kwargs)
|
return TeleBot.answer_callback_query(self, *args, **kwargs)
|
||||||
|
|
||||||
@util.async_dec()
|
|
||||||
def send_sticker(self, *args, **kwargs):
|
|
||||||
return TeleBot.send_sticker(self, *args, **kwargs)
|
|
||||||
|
|
||||||
@util.async_dec()
|
@util.async_dec()
|
||||||
def get_sticker_set(self, *args, **kwargs):
|
def get_sticker_set(self, *args, **kwargs):
|
||||||
return TeleBot.get_sticker_set(self, *args, **kwargs)
|
return TeleBot.get_sticker_set(self, *args, **kwargs)
|
||||||
|
Loading…
Reference in New Issue
Block a user