mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Merge branch 'master' into master
This commit is contained in:
commit
f251def304
@ -1285,16 +1285,23 @@ class TeleBot:
|
||||
while i < len(new_messages):
|
||||
message = new_messages[i]
|
||||
chat_id = message.chat.id
|
||||
was_poped = False
|
||||
if chat_id in self.next_step_handlers.keys():
|
||||
handlers = self.next_step_handlers[chat_id]
|
||||
for handler in handlers:
|
||||
self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"])
|
||||
if (handlers):
|
||||
for handler in handlers:
|
||||
self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"])
|
||||
new_messages.pop(i) # removing message that detects with next_step_handler
|
||||
was_poped = True
|
||||
self.next_step_handlers.pop(chat_id, None)
|
||||
new_messages.pop(i) # removing message that detects with next_step_handler
|
||||
if self.next_step_saver is not None:
|
||||
self.next_step_saver.start_save_timer()
|
||||
i += 1
|
||||
|
||||
if (not was_poped):
|
||||
i += 1
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _build_handler_dict(handler, **filters):
|
||||
@ -1486,254 +1493,256 @@ class AsyncTeleBot(TeleBot):
|
||||
def __init__(self, *args, **kwargs):
|
||||
TeleBot.__init__(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def enable_save_next_step_handlers(self, delay=120, filename="./.handler-saves/step.save", del_file_after_loading=True):
|
||||
return TeleBot.enable_save_next_step_handlers(self, delay, filename, del_file_after_loading)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def enable_save_reply_handlers(self, delay=120, filename="./.handler-saves/reply.save", del_file_after_loading=True):
|
||||
return TeleBot.enable_save_reply_handlers(self, delay, filename, del_file_after_loading)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def disable_save_next_step_handlers(self):
|
||||
return TeleBot.disable_save_next_step_handlers(self)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def disable_save_reply_handlers(self):
|
||||
return TeleBot.enable_save_reply_handlers(self)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def load_next_step_handlers(self, filename="./.handler-saves/step.save"):
|
||||
return TeleBot.load_next_step_handlers(self, filename)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def load_reply_handlers(self, filename="./.handler-saves/reply.save"):
|
||||
return TeleBot.load_reply_handlers(self, filename)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
|
||||
@util.async_dec()
|
||||
def get_me(self):
|
||||
return TeleBot.get_me(self)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_file(self, *args):
|
||||
return TeleBot.get_file(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def download_file(self, *args):
|
||||
return TeleBot.download_file(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_user_profile_photos(self, *args, **kwargs):
|
||||
return TeleBot.get_user_profile_photos(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_chat(self, *args):
|
||||
return TeleBot.get_chat(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def leave_chat(self, *args):
|
||||
return TeleBot.leave_chat(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_chat_administrators(self, *args):
|
||||
return TeleBot.get_chat_administrators(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_chat_members_count(self, *args):
|
||||
return TeleBot.get_chat_members_count(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_chat_sticker_set(self, *args):
|
||||
return TeleBot.set_chat_sticker_set(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def delete_chat_sticker_set(self, *args):
|
||||
return TeleBot.delete_chat_sticker_set(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_chat_member(self, *args):
|
||||
return TeleBot.get_chat_member(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_message(self, *args, **kwargs):
|
||||
return TeleBot.send_message(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def forward_message(self, *args, **kwargs):
|
||||
return TeleBot.forward_message(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def delete_message(self, *args):
|
||||
return TeleBot.delete_message(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_photo(self, *args, **kwargs):
|
||||
return TeleBot.send_photo(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_audio(self, *args, **kwargs):
|
||||
return TeleBot.send_audio(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_voice(self, *args, **kwargs):
|
||||
return TeleBot.send_voice(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_document(self, *args, **kwargs):
|
||||
return TeleBot.send_document(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_sticker(self, *args, **kwargs):
|
||||
return TeleBot.send_sticker(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_video(self, *args, **kwargs):
|
||||
return TeleBot.send_video(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_video_note(self, *args, **kwargs):
|
||||
return TeleBot.send_video_note(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_media_group(self, *args, **kwargs):
|
||||
return TeleBot.send_media_group(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_location(self, *args, **kwargs):
|
||||
return TeleBot.send_location(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def edit_message_live_location(self, *args, **kwargs):
|
||||
return TeleBot.edit_message_live_location(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def stop_message_live_location(self, *args, **kwargs):
|
||||
return TeleBot.stop_message_live_location(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_venue(self, *args, **kwargs):
|
||||
return TeleBot.send_venue(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_contact(self, *args, **kwargs):
|
||||
return TeleBot.send_contact(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_chat_action(self, *args, **kwargs):
|
||||
return TeleBot.send_chat_action(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def kick_chat_member(self, *args, **kwargs):
|
||||
return TeleBot.kick_chat_member(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def unban_chat_member(self, *args):
|
||||
return TeleBot.unban_chat_member(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def restrict_chat_member(self, *args, **kwargs):
|
||||
return TeleBot.restrict_chat_member(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def promote_chat_member(self, *args, **kwargs):
|
||||
return TeleBot.promote_chat_member(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def export_chat_invite_link(self, *args):
|
||||
return TeleBot.export_chat_invite_link(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_chat_photo(self, *args):
|
||||
return TeleBot.set_chat_photo(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def delete_chat_photo(self, *args):
|
||||
return TeleBot.delete_chat_photo(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_chat_title(self, *args):
|
||||
return TeleBot.set_chat_title(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_chat_description(self, *args):
|
||||
return TeleBot.set_chat_description(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def pin_chat_message(self, *args, **kwargs):
|
||||
return TeleBot.pin_chat_message(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def unpin_chat_message(self, *args):
|
||||
return TeleBot.unpin_chat_message(self, *args)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def edit_message_text(self, *args, **kwargs):
|
||||
return TeleBot.edit_message_text(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def edit_message_reply_markup(self, *args, **kwargs):
|
||||
return TeleBot.edit_message_reply_markup(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_game(self, *args, **kwargs):
|
||||
return TeleBot.send_game(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_game_score(self, *args, **kwargs):
|
||||
return TeleBot.set_game_score(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_game_high_scores(self, *args, **kwargs):
|
||||
return TeleBot.get_game_high_scores(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_invoice(self, *args, **kwargs):
|
||||
return TeleBot.send_invoice(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def answer_shipping_query(self, *args, **kwargs):
|
||||
return TeleBot.answer_shipping_query(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def answer_pre_checkout_query(self, *args, **kwargs):
|
||||
return TeleBot.answer_pre_checkout_query(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def edit_message_caption(self, *args, **kwargs):
|
||||
return TeleBot.edit_message_caption(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def answer_inline_query(self, *args, **kwargs):
|
||||
return TeleBot.answer_inline_query(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def answer_callback_query(self, *args, **kwargs):
|
||||
return TeleBot.answer_callback_query(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def send_sticker(self, *args, **kwargs):
|
||||
return TeleBot.send_sticker(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def get_sticker_set(self, *args, **kwargs):
|
||||
return TeleBot.get_sticker_set(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def upload_sticker_file(self, *args, **kwargs):
|
||||
return TeleBot.upload_sticker_file(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def create_new_sticker_set(self, *args, **kwargs):
|
||||
return TeleBot.create_new_sticker_set(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def add_sticker_to_set(self, *args, **kwargs):
|
||||
return TeleBot.add_sticker_to_set(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def set_sticker_position_in_set(self, *args, **kwargs):
|
||||
return TeleBot.set_sticker_position_in_set(self, *args, **kwargs)
|
||||
|
||||
@util.async()
|
||||
@util.async_dec()
|
||||
def delete_sticker_from_set(self, *args, **kwargs):
|
||||
return TeleBot.delete_sticker_from_set(self, *args, **kwargs)
|
||||
|
@ -437,8 +437,7 @@ class Message(JsonDeserializable):
|
||||
setattr(self, key, options[key])
|
||||
self.json = json_string
|
||||
|
||||
@property
|
||||
def html_text(self):
|
||||
def __html_text(self, text, entities):
|
||||
"""
|
||||
Author: @sviat9440
|
||||
Message: "*Test* parse _formatting_, [url](https://example.com), [text_mention](tg://user?id=123456) and mention @username"
|
||||
@ -455,19 +454,20 @@ class Message(JsonDeserializable):
|
||||
>> "<strong class=\"example\">Test</strong> parse <i class=\"example\">formatting</i>, <a href=\"https://example.com\">url</a> and <a href=\"tg://user?id=123456\">text_mention</a> and mention <a href=\"https://t.me/username\">@username</a>"
|
||||
"""
|
||||
|
||||
if not self.entities:
|
||||
return self.text
|
||||
if not entities:
|
||||
return text
|
||||
_subs = {
|
||||
"bold": "<b>{text}</b>",
|
||||
"italic": "<i>{text}</i>",
|
||||
"pre": "<pre>{text}</pre>",
|
||||
"code": "<code>{text}</code>",
|
||||
"url": "<a href=\"{url}\">{text}</a>"
|
||||
"url": "<a href=\"{url}\">{text}</a>",
|
||||
"text_link": "<a href=\"{url}\">{text}</a>"
|
||||
}
|
||||
if hasattr(self, "custom_subs"):
|
||||
for type in self.custom_subs:
|
||||
_subs[type] = self.custom_subs[type]
|
||||
utf16_text = self.text.encode("utf-16-le")
|
||||
utf16_text = text.encode("utf-16-le")
|
||||
html_text = ""
|
||||
def func(text, type=None, url=None, user=None):
|
||||
text = text.decode("utf-16-le")
|
||||
@ -483,7 +483,7 @@ class Message(JsonDeserializable):
|
||||
return subs.format(text=text, url=url)
|
||||
|
||||
offset = 0
|
||||
for entity in self.entities:
|
||||
for entity in entities:
|
||||
if entity.offset > offset:
|
||||
html_text += func(utf16_text[offset * 2 : entity.offset * 2])
|
||||
offset = entity.offset
|
||||
@ -493,6 +493,13 @@ class Message(JsonDeserializable):
|
||||
html_text += func(utf16_text[offset * 2:])
|
||||
return html_text
|
||||
|
||||
@property
|
||||
def html_text(self):
|
||||
return self.__html_text(self.text, self.entities)
|
||||
|
||||
@property
|
||||
def html_caption(self):
|
||||
return self.__html_text(self.caption, self.caption_entities)
|
||||
|
||||
class MessageEntity(JsonDeserializable):
|
||||
@classmethod
|
||||
|
@ -143,7 +143,7 @@ class AsyncTask:
|
||||
return self.result
|
||||
|
||||
|
||||
def async():
|
||||
def async_dec():
|
||||
def decorator(fn):
|
||||
def wrapper(*args, **kwargs):
|
||||
return AsyncTask(fn, *args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user