From c8b2a3adca32b9abb31af77fe66a27200c940e58 Mon Sep 17 00:00:00 2001 From: wulan17 Date: Sat, 30 Dec 2023 00:30:33 +0700 Subject: [PATCH] Pyrofork: Add quote_entities parameter to send_{*} methods and Message.reply_{*} bound methods also add missing parameters to InputReplyToMessage docs Signed-off-by: wulan17 --- .../methods/bots/send_inline_bot_result.py | 21 ++- pyrogram/methods/messages/send_animation.py | 9 +- pyrogram/methods/messages/send_audio.py | 9 +- .../methods/messages/send_cached_media.py | 9 +- pyrogram/methods/messages/send_contact.py | 19 ++- pyrogram/methods/messages/send_dice.py | 19 ++- pyrogram/methods/messages/send_document.py | 9 +- pyrogram/methods/messages/send_location.py | 19 ++- pyrogram/methods/messages/send_media_group.py | 18 ++- pyrogram/methods/messages/send_message.py | 9 +- pyrogram/methods/messages/send_photo.py | 9 +- pyrogram/methods/messages/send_poll.py | 17 +- pyrogram/methods/messages/send_sticker.py | 18 ++- pyrogram/methods/messages/send_venue.py | 19 ++- pyrogram/methods/messages/send_video.py | 9 +- pyrogram/methods/messages/send_video_note.py | 18 ++- pyrogram/methods/messages/send_voice.py | 9 +- pyrogram/methods/messages/send_web_page.py | 9 +- .../input_reply_to_message.py | 21 ++- pyrogram/types/messages_and_media/message.py | 150 +++++++++++++++++- pyrogram/utils.py | 8 +- 21 files changed, 388 insertions(+), 40 deletions(-) diff --git a/pyrogram/methods/bots/send_inline_bot_result.py b/pyrogram/methods/bots/send_inline_bot_result.py index c827b973..52afcc81 100644 --- a/pyrogram/methods/bots/send_inline_bot_result.py +++ b/pyrogram/methods/bots/send_inline_bot_result.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrofork. If not, see . -from typing import Union +from typing import List, Union, Optional import pyrogram -from pyrogram import raw, types, utils +from pyrogram import enums, raw, types, utils class SendInlineBotResult: @@ -32,7 +32,9 @@ class SendInlineBotResult: disable_notification: bool = None, message_thread_id: int = None, reply_to_message_id: int = None, - quote_text: str = None + quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None ) -> "raw.base.Updates": """Send an inline bot result. Bot results can be retrieved using :meth:`~pyrogram.Client.get_inline_bot_results` @@ -66,6 +68,15 @@ class SendInlineBotResult: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + Returns: :obj:`~pyrogram.raw.base.Updates`: Currently, on success, a raw result is returned. @@ -80,7 +91,9 @@ class SendInlineBotResult: chat_id=chat_id, reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) return await self.invoke( diff --git a/pyrogram/methods/messages/send_animation.py b/pyrogram/methods/messages/send_animation.py index 3ffa546d..a279d38f 100644 --- a/pyrogram/methods/messages/send_animation.py +++ b/pyrogram/methods/messages/send_animation.py @@ -52,6 +52,7 @@ class SendAnimation: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -138,6 +139,10 @@ class SendAnimation: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -202,7 +207,9 @@ class SendAnimation: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_audio.py b/pyrogram/methods/messages/send_audio.py index e46314f4..c03c6883 100644 --- a/pyrogram/methods/messages/send_audio.py +++ b/pyrogram/methods/messages/send_audio.py @@ -50,6 +50,7 @@ class SendAudio: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -131,6 +132,10 @@ class SendAudio: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -196,7 +201,9 @@ class SendAudio: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_cached_media.py b/pyrogram/methods/messages/send_cached_media.py index 77094c74..6954a937 100644 --- a/pyrogram/methods/messages/send_cached_media.py +++ b/pyrogram/methods/messages/send_cached_media.py @@ -41,6 +41,7 @@ class SendCachedMedia: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -103,6 +104,10 @@ class SendCachedMedia: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -129,7 +134,9 @@ class SendCachedMedia: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) media = utils.get_input_media_from_file_id(file_id) diff --git a/pyrogram/methods/messages/send_contact.py b/pyrogram/methods/messages/send_contact.py index 4cbace44..d1f9ebf6 100644 --- a/pyrogram/methods/messages/send_contact.py +++ b/pyrogram/methods/messages/send_contact.py @@ -18,10 +18,10 @@ # along with Pyrofork. If not, see . from datetime import datetime -from typing import Union +from typing import List, Union, Optional import pyrogram -from pyrogram import raw, utils +from pyrogram import enums, raw, utils from pyrogram import types @@ -38,6 +38,8 @@ class SendContact: reply_to_message_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -88,6 +90,15 @@ class SendContact: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -113,7 +124,9 @@ class SendContact: reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) r = await self.invoke( diff --git a/pyrogram/methods/messages/send_dice.py b/pyrogram/methods/messages/send_dice.py index 1f0c840f..03e86b71 100644 --- a/pyrogram/methods/messages/send_dice.py +++ b/pyrogram/methods/messages/send_dice.py @@ -18,10 +18,10 @@ # along with Pyrofork. If not, see . from datetime import datetime -from typing import Union, Optional +from typing import List, Union, Optional import pyrogram -from pyrogram import raw, utils +from pyrogram import enums, raw, utils from pyrogram import types @@ -36,6 +36,8 @@ class SendDice: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -84,6 +86,15 @@ class SendDice: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -117,7 +128,9 @@ class SendDice: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) r = await self.invoke( diff --git a/pyrogram/methods/messages/send_document.py b/pyrogram/methods/messages/send_document.py index 4deb0bd1..30b7d0fa 100644 --- a/pyrogram/methods/messages/send_document.py +++ b/pyrogram/methods/messages/send_document.py @@ -48,6 +48,7 @@ class SendDocument: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -123,6 +124,10 @@ class SendDocument: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -183,7 +188,9 @@ class SendDocument: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_location.py b/pyrogram/methods/messages/send_location.py index 323cb03c..714d8d28 100644 --- a/pyrogram/methods/messages/send_location.py +++ b/pyrogram/methods/messages/send_location.py @@ -18,10 +18,10 @@ # along with Pyrofork. If not, see . from datetime import datetime -from typing import Union +from typing import List, Union, Optional import pyrogram -from pyrogram import raw, utils +from pyrogram import enums, raw, utils from pyrogram import types @@ -36,6 +36,8 @@ class SendLocation: reply_to_message_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -80,6 +82,15 @@ class SendLocation: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -105,7 +116,9 @@ class SendLocation: reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) r = await self.invoke( diff --git a/pyrogram/methods/messages/send_media_group.py b/pyrogram/methods/messages/send_media_group.py index 9d913e0a..7a58c3f4 100644 --- a/pyrogram/methods/messages/send_media_group.py +++ b/pyrogram/methods/messages/send_media_group.py @@ -22,9 +22,10 @@ import os import re from datetime import datetime from pymediainfo import MediaInfo -from typing import Union, List +from typing import Union, List, Optional import pyrogram +from pyrogram import enums from pyrogram import raw from pyrogram import types from pyrogram import utils @@ -51,6 +52,8 @@ class SendMediaGroup: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, ) -> List["types.Message"]: @@ -89,6 +92,15 @@ class SendMediaGroup: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -121,7 +133,9 @@ class SendMediaGroup: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) for i in media: diff --git a/pyrogram/methods/messages/send_message.py b/pyrogram/methods/messages/send_message.py index 0e918054..9edba293 100644 --- a/pyrogram/methods/messages/send_message.py +++ b/pyrogram/methods/messages/send_message.py @@ -39,6 +39,7 @@ class SendMessage: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -93,6 +94,10 @@ class SendMessage: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -150,7 +155,9 @@ class SendMessage: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) r = await self.invoke( diff --git a/pyrogram/methods/messages/send_photo.py b/pyrogram/methods/messages/send_photo.py index d62a1759..d6925e0e 100644 --- a/pyrogram/methods/messages/send_photo.py +++ b/pyrogram/methods/messages/send_photo.py @@ -46,6 +46,7 @@ class SendPhoto: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -114,6 +115,10 @@ class SendPhoto: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -174,7 +179,9 @@ class SendPhoto: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_poll.py b/pyrogram/methods/messages/send_poll.py index 9e89dc47..c0a1ef03 100644 --- a/pyrogram/methods/messages/send_poll.py +++ b/pyrogram/methods/messages/send_poll.py @@ -18,7 +18,7 @@ # along with Pyrofork. If not, see . from datetime import datetime -from typing import Union, List +from typing import Union, List, Optional import pyrogram from pyrogram import raw, utils @@ -47,6 +47,8 @@ class SendPoll: reply_to_message_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, reply_markup: Union[ "types.InlineKeyboardMarkup", @@ -133,6 +135,15 @@ class SendPoll: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -155,7 +166,9 @@ class SendPoll: reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) solution, solution_entities = (await utils.parse_text_entities( diff --git a/pyrogram/methods/messages/send_sticker.py b/pyrogram/methods/messages/send_sticker.py index 847df01c..fd73517f 100644 --- a/pyrogram/methods/messages/send_sticker.py +++ b/pyrogram/methods/messages/send_sticker.py @@ -20,10 +20,11 @@ import os import re from datetime import datetime -from typing import Union, BinaryIO, Optional, Callable +from typing import List, Union, BinaryIO, Optional, Callable import pyrogram from pyrogram import StopTransmission +from pyrogram import enums from pyrogram import raw from pyrogram import types from pyrogram import utils @@ -42,6 +43,8 @@ class SendSticker: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -92,6 +95,15 @@ class SendSticker: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -147,7 +159,9 @@ class SendSticker: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_venue.py b/pyrogram/methods/messages/send_venue.py index 041264a6..5557937b 100644 --- a/pyrogram/methods/messages/send_venue.py +++ b/pyrogram/methods/messages/send_venue.py @@ -18,10 +18,10 @@ # along with Pyrofork. If not, see . from datetime import datetime -from typing import Union +from typing import List, Union, Optional import pyrogram -from pyrogram import raw, utils +from pyrogram import enums, raw, utils from pyrogram import types @@ -40,6 +40,8 @@ class SendVenue: reply_to_message_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -97,6 +99,15 @@ class SendVenue: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -124,7 +135,9 @@ class SendVenue: reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) r = await self.invoke( diff --git a/pyrogram/methods/messages/send_video.py b/pyrogram/methods/messages/send_video.py index 64995257..4658b882 100644 --- a/pyrogram/methods/messages/send_video.py +++ b/pyrogram/methods/messages/send_video.py @@ -53,6 +53,7 @@ class SendVideo: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -144,6 +145,10 @@ class SendVideo: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -207,7 +212,9 @@ class SendVideo: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_video_note.py b/pyrogram/methods/messages/send_video_note.py index 779fbbbe..47e7beff 100644 --- a/pyrogram/methods/messages/send_video_note.py +++ b/pyrogram/methods/messages/send_video_note.py @@ -19,10 +19,11 @@ import os from datetime import datetime -from typing import Union, BinaryIO, Optional, Callable +from typing import List, Union, BinaryIO, Optional, Callable import pyrogram from pyrogram import StopTransmission +from pyrogram import enums from pyrogram import raw from pyrogram import types from pyrogram import utils @@ -44,6 +45,8 @@ class SendVideoNote: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -106,6 +109,15 @@ class SendVideoNote: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -161,7 +173,9 @@ class SendVideoNote: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_voice.py b/pyrogram/methods/messages/send_voice.py index a985d0cf..b407731e 100644 --- a/pyrogram/methods/messages/send_voice.py +++ b/pyrogram/methods/messages/send_voice.py @@ -46,6 +46,7 @@ class SendVoice: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -112,6 +113,10 @@ class SendVoice: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -169,7 +174,9 @@ class SendVoice: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) try: diff --git a/pyrogram/methods/messages/send_web_page.py b/pyrogram/methods/messages/send_web_page.py index 67ca2436..3d2565e9 100644 --- a/pyrogram/methods/messages/send_web_page.py +++ b/pyrogram/methods/messages/send_web_page.py @@ -40,6 +40,7 @@ class SendWebPage: reply_to_story_id: int = None, reply_to_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup: Union[ @@ -100,6 +101,10 @@ class SendWebPage: Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -129,7 +134,9 @@ class SendWebPage: reply_to_story_id=reply_to_story_id, message_thread_id=message_thread_id, reply_to_chat_id=reply_to_chat_id, - quote_text=quote_text + quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode ) media = raw.types.InputMediaWebPage( diff --git a/pyrogram/types/input_message_content/input_reply_to_message.py b/pyrogram/types/input_message_content/input_reply_to_message.py index 1e1a0098..8d0b5667 100644 --- a/pyrogram/types/input_message_content/input_reply_to_message.py +++ b/pyrogram/types/input_message_content/input_reply_to_message.py @@ -18,7 +18,7 @@ from pyrogram import raw from ..object import Object -from typing import Union +from typing import List, Union class InputReplyToMessage(Object): @@ -32,6 +32,18 @@ class InputReplyToMessage(Object): message_thread_id (``int``, *optional*): Unique identifier for the target message thread (topic) of the forum. for forum supergroups only. + + reply_to_chat (:obj:`~pyrogram.raw.InputPeer`, *optional*): + Unique identifier for the origin chat. + for reply to message from another chat. + + quote_text (``str``, *optional*): + Text to quote. + for reply_to_message only. + + quote_entities (List of :obj:`~pyrogram.raw.base.MessageEntity`): + Entities to quote. + for reply_to_message only. """ def __init__( @@ -42,7 +54,8 @@ class InputReplyToMessage(Object): "raw.types.InputPeerChannel", "raw.types.InputPeerUser" ] = None, - quote_text: str = None + quote_text: str = None, + quote_entities: List["raw.base.MessageEntity"] = None ): super().__init__() @@ -50,6 +63,7 @@ class InputReplyToMessage(Object): self.message_thread_id = message_thread_id self.reply_to_chat = reply_to_chat self.quote_text = quote_text + self.quote_entities = quote_entities def write(self): reply_to_msg_id = None @@ -67,6 +81,7 @@ class InputReplyToMessage(Object): reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id, reply_to_peer_id=self.reply_to_chat, - quote_text=self.quote_text + quote_text=self.quote_text, + quote_entities=self.quote_entities ).write() return None diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 83202612..131a131e 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -1174,6 +1174,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup=None @@ -1231,6 +1232,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -1275,6 +1280,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, schedule_date=schedule_date, protect_content=protect_content, reply_markup=reply_markup @@ -1305,6 +1311,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, progress: Callable = None, progress_args: tuple = () ) -> "Message": @@ -1383,6 +1390,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -1450,6 +1461,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -1471,6 +1483,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -1552,6 +1565,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -1618,6 +1635,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -1634,6 +1652,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -1692,6 +1711,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -1729,6 +1752,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup ) @@ -1780,6 +1804,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -1837,6 +1863,15 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -1874,6 +1909,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, reply_markup=reply_markup ) @@ -1891,6 +1928,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, reply_markup: Union[ "types.InlineKeyboardMarkup", @@ -1968,6 +2006,10 @@ class Message(Object, Update): quote_text (``str``, *optional*): Text to quote. for reply_to_message only. + + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -2036,6 +2078,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, schedule_date=schedule_date, reply_markup=reply_markup, progress=progress, @@ -2123,7 +2166,9 @@ class Message(Object, Update): quote: bool = None, disable_notification: bool = None, reply_to_message_id: int = None, - quote_text: str = None + quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None ) -> "Message": """Bound method *reply_inline_bot_result* of :obj:`~pyrogram.types.Message`. @@ -2165,6 +2210,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + Returns: On success, the sent Message is returned. @@ -2200,6 +2249,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -2251,6 +2302,15 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -2286,6 +2346,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, reply_markup=reply_markup ) @@ -2301,7 +2363,9 @@ class Message(Object, Update): disable_notification: bool = None, reply_to_message_id: int = None, reply_in_chat_id: int = None, - quote_text: str = None + quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None ) -> List["types.Message"]: """Bound method *reply_media_group* of :obj:`~pyrogram.types.Message`. @@ -2345,6 +2409,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + Returns: On success, a :obj:`~pyrogram.types.Messages` object is returned containing all the single messages sent. @@ -2391,6 +2459,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -2461,6 +2530,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -2524,6 +2597,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -2549,6 +2623,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, schedule_date: datetime = None, reply_markup: Union[ "types.InlineKeyboardMarkup", @@ -2644,6 +2720,15 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -2693,6 +2778,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, schedule_date=schedule_date, reply_markup=reply_markup ) @@ -2705,6 +2792,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -2757,6 +2846,15 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -2815,6 +2913,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -2833,6 +2933,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -2899,6 +3001,15 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + + parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*): + By default, quote_text are parsed using both Markdown and HTML styles. + You can combine both syntaxes together. + For quote_text. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -2938,6 +3049,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, reply_markup=reply_markup ) @@ -2960,6 +3073,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -3052,6 +3166,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -3121,6 +3239,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -3137,6 +3256,8 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: Optional["enums.ParseMode"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -3201,6 +3322,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -3262,6 +3387,8 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, + parse_mode=parse_mode, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -3279,6 +3406,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_markup: Union[ "types.InlineKeyboardMarkup", "types.ReplyKeyboardMarkup", @@ -3344,6 +3472,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardMarkup` | :obj:`~pyrogram.types.ReplyKeyboardRemove` | :obj:`~pyrogram.types.ForceReply`, *optional*): Additional interface options. An object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. @@ -3406,6 +3538,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, reply_markup=reply_markup, progress=progress, progress_args=progress_args @@ -3423,6 +3556,7 @@ class Message(Object, Update): reply_to_message_id: int = None, reply_in_chat_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, schedule_date: datetime = None, protect_content: bool = None, reply_markup=None @@ -3484,6 +3618,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + schedule_date (:py:obj:`~datetime.datetime`, *optional*): Date when the message will be automatically sent. @@ -3530,6 +3668,7 @@ class Message(Object, Update): reply_to_message_id=reply_to_message_id, reply_to_chat_id=reply_to_chat_id, quote_text=quote_text, + quote_entities=quote_entities, schedule_date=schedule_date, protect_content=protect_content, reply_markup=reply_markup @@ -3802,6 +3941,7 @@ class Message(Object, Update): disable_notification: bool = None, message_thread_id: int = None, quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, reply_to_message_id: int = None, schedule_date: datetime = None, protect_content: bool = None, @@ -3862,6 +4002,10 @@ class Message(Object, Update): Text to quote. for reply_to_message only. + quote_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*): + List of special entities that appear in quote_text, which can be specified instead of *parse_mode*. + for reply_to_message only. + reply_to_message_id (``int``, *optional*): If the message is a reply, ID of the original message. @@ -3902,6 +4046,7 @@ class Message(Object, Update): message_thread_id=message_thread_id, reply_to_message_id=reply_to_message_id, quote_text=quote_text, + quote_entities=quote_entities, schedule_date=schedule_date, protect_content=protect_content, reply_markup=self.reply_markup if reply_markup is object else reply_markup @@ -3997,6 +4142,7 @@ class Message(Object, Update): message_thread_id=message_thread_id, reply_to_message_id=reply_to_message_id, quote_text=quote_text, + quote_entities=quote_entities, schedule_date=schedule_date, protect_content=protect_content, reply_markup=self.reply_markup if reply_markup is object else reply_markup diff --git a/pyrogram/utils.py b/pyrogram/utils.py index fe04f2b2..853d9a8a 100644 --- a/pyrogram/utils.py +++ b/pyrogram/utils.py @@ -454,18 +454,22 @@ async def get_reply_to( reply_to_story_id: int = None, message_thread_id: int = None, reply_to_chat_id: Union[int,str] = None, - quote_text: str = None + quote_text: str = None, + quote_entities: List["types.MessageEntity"] = None, + parse_mode: "enums.ParseMode" = None ): reply_to = None reply_to_chat = None if reply_to_message_id or message_thread_id: + text, entities = (await parse_text_entities(client, quote_text, parse_mode, quote_entities)).values() if reply_to_chat_id is not None: reply_to_chat = await client.resolve_peer(reply_to_chat_id) reply_to = types.InputReplyToMessage( reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id, reply_to_chat=reply_to_chat, - quote_text=quote_text + quote_text=text, + quote_entities=entities ) if reply_to_story_id: user_id = await client.resolve_peer(chat_id)