diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index c5e7418c..24bc6317 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -522,6 +522,7 @@ def pyrogram_api(): input_message_content=""" InputMessageContent InputMessageContent + InputReplyToMessage InputTextMessageContent """, authorization=""" diff --git a/pyrogram/methods/bots/send_game.py b/pyrogram/methods/bots/send_game.py index a35c6df0..ec090d9f 100644 --- a/pyrogram/methods/bots/send_game.py +++ b/pyrogram/methods/bots/send_game.py @@ -80,17 +80,7 @@ class SendGame: """ reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/bots/send_inline_bot_result.py b/pyrogram/methods/bots/send_inline_bot_result.py index 5bc70482..03034518 100644 --- a/pyrogram/methods/bots/send_inline_bot_result.py +++ b/pyrogram/methods/bots/send_inline_bot_result.py @@ -71,17 +71,7 @@ class SendInlineBotResult: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) return await self.invoke( raw.functions.messages.SendInlineBotResult( diff --git a/pyrogram/methods/messages/copy_media_group.py b/pyrogram/methods/messages/copy_media_group.py index f01a14f8..d796cc57 100644 --- a/pyrogram/methods/messages/copy_media_group.py +++ b/pyrogram/methods/messages/copy_media_group.py @@ -96,17 +96,7 @@ class CopyMediaGroup: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) for i, message in enumerate(media_group): if message.photo: diff --git a/pyrogram/methods/messages/send_animation.py b/pyrogram/methods/messages/send_animation.py index b337ec60..002d76f4 100644 --- a/pyrogram/methods/messages/send_animation.py +++ b/pyrogram/methods/messages/send_animation.py @@ -182,17 +182,7 @@ class SendAnimation: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(animation, str): diff --git a/pyrogram/methods/messages/send_audio.py b/pyrogram/methods/messages/send_audio.py index 212f4331..d1df3271 100644 --- a/pyrogram/methods/messages/send_audio.py +++ b/pyrogram/methods/messages/send_audio.py @@ -176,17 +176,7 @@ class SendAudio: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(audio, str): diff --git a/pyrogram/methods/messages/send_cached_media.py b/pyrogram/methods/messages/send_cached_media.py index 5213a874..f06755b3 100644 --- a/pyrogram/methods/messages/send_cached_media.py +++ b/pyrogram/methods/messages/send_cached_media.py @@ -105,17 +105,7 @@ class SendCachedMedia: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/messages/send_contact.py b/pyrogram/methods/messages/send_contact.py index 9be6ca52..2f39000b 100644 --- a/pyrogram/methods/messages/send_contact.py +++ b/pyrogram/methods/messages/send_contact.py @@ -98,17 +98,7 @@ class SendContact: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/messages/send_dice.py b/pyrogram/methods/messages/send_dice.py index 92c3d2c8..2b752fc4 100644 --- a/pyrogram/methods/messages/send_dice.py +++ b/pyrogram/methods/messages/send_dice.py @@ -97,17 +97,7 @@ class SendDice: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/messages/send_document.py b/pyrogram/methods/messages/send_document.py index adfd9eb8..44cbee99 100644 --- a/pyrogram/methods/messages/send_document.py +++ b/pyrogram/methods/messages/send_document.py @@ -163,17 +163,7 @@ class SendDocument: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(document, str): diff --git a/pyrogram/methods/messages/send_location.py b/pyrogram/methods/messages/send_location.py index 3ae8c88f..4d71ba2e 100644 --- a/pyrogram/methods/messages/send_location.py +++ b/pyrogram/methods/messages/send_location.py @@ -90,17 +90,7 @@ class SendLocation: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/messages/send_media_group.py b/pyrogram/methods/messages/send_media_group.py index 6a06cc36..9783cc77 100644 --- a/pyrogram/methods/messages/send_media_group.py +++ b/pyrogram/methods/messages/send_media_group.py @@ -101,17 +101,7 @@ class SendMediaGroup: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) for i in media: if isinstance(i, types.InputMediaPhoto): diff --git a/pyrogram/methods/messages/send_message.py b/pyrogram/methods/messages/send_message.py index 14a4d429..0fd7cdbe 100644 --- a/pyrogram/methods/messages/send_message.py +++ b/pyrogram/methods/messages/send_message.py @@ -130,17 +130,7 @@ class SendMessage: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMessage( diff --git a/pyrogram/methods/messages/send_photo.py b/pyrogram/methods/messages/send_photo.py index 50973f6d..85dd91d8 100644 --- a/pyrogram/methods/messages/send_photo.py +++ b/pyrogram/methods/messages/send_photo.py @@ -154,17 +154,7 @@ class SendPhoto: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(photo, str): diff --git a/pyrogram/methods/messages/send_poll.py b/pyrogram/methods/messages/send_poll.py index f384584a..55f2e14c 100644 --- a/pyrogram/methods/messages/send_poll.py +++ b/pyrogram/methods/messages/send_poll.py @@ -140,17 +140,7 @@ class SendPoll: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) solution, solution_entities = (await utils.parse_text_entities( self, explanation, explanation_parse_mode, explanation_entities diff --git a/pyrogram/methods/messages/send_sticker.py b/pyrogram/methods/messages/send_sticker.py index 44628e65..283560ba 100644 --- a/pyrogram/methods/messages/send_sticker.py +++ b/pyrogram/methods/messages/send_sticker.py @@ -127,17 +127,7 @@ class SendSticker: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(sticker, str): diff --git a/pyrogram/methods/messages/send_venue.py b/pyrogram/methods/messages/send_venue.py index 2428749b..19bdb753 100644 --- a/pyrogram/methods/messages/send_venue.py +++ b/pyrogram/methods/messages/send_venue.py @@ -109,17 +109,7 @@ class SendVenue: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) r = await self.invoke( raw.functions.messages.SendMedia( diff --git a/pyrogram/methods/messages/send_video.py b/pyrogram/methods/messages/send_video.py index 22eabbc0..dac03ba7 100644 --- a/pyrogram/methods/messages/send_video.py +++ b/pyrogram/methods/messages/send_video.py @@ -187,17 +187,7 @@ class SendVideo: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(video, str): diff --git a/pyrogram/methods/messages/send_video_note.py b/pyrogram/methods/messages/send_video_note.py index e5f7bf0e..9d0aa3a5 100644 --- a/pyrogram/methods/messages/send_video_note.py +++ b/pyrogram/methods/messages/send_video_note.py @@ -141,17 +141,7 @@ class SendVideoNote: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(video_note, str): diff --git a/pyrogram/methods/messages/send_voice.py b/pyrogram/methods/messages/send_voice.py index e9923466..83bcb633 100644 --- a/pyrogram/methods/messages/send_voice.py +++ b/pyrogram/methods/messages/send_voice.py @@ -146,17 +146,7 @@ class SendVoice: reply_to = None if reply_to_message_id or message_thread_id: - reply_to_msg_id = None - top_msg_id = None - if message_thread_id: - if not reply_to_message_id: - reply_to_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - top_msg_id = message_thread_id - else: - reply_to_msg_id = reply_to_message_id - reply_to = raw.types.InputReplyToMessage(reply_to_msg_id=reply_to_msg_id, top_msg_id=top_msg_id) + reply_to = types.InputReplyToMessage(reply_to_message_id=reply_to_message_id, message_thread_id=message_thread_id) try: if isinstance(voice, str): diff --git a/pyrogram/types/input_message_content/__init__.py b/pyrogram/types/input_message_content/__init__.py index b445f3ba..91b5dfbb 100644 --- a/pyrogram/types/input_message_content/__init__.py +++ b/pyrogram/types/input_message_content/__init__.py @@ -17,8 +17,9 @@ # along with Pyrogram. If not, see . from .input_message_content import InputMessageContent +from .input_reply_to_message import InputReplyToMessage from .input_text_message_content import InputTextMessageContent __all__ = [ - "InputMessageContent", "InputTextMessageContent" + "InputMessageContent", "InputReplyToMessage", "InputTextMessageContent" ] diff --git a/pyrogram/types/input_message_content/input_reply_to_message.py b/pyrogram/types/input_message_content/input_reply_to_message.py new file mode 100644 index 00000000..52b284d0 --- /dev/null +++ b/pyrogram/types/input_message_content/input_reply_to_message.py @@ -0,0 +1,62 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrofork is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrofork. If not, see . + +from pyrogram import raw +from ..object import Object + + +class InputReplyToMessage(Object): + """Contains information about a target replied message. + + + Parameters: + reply_to_message_id (``int``, *optional*): + ID of the original message you want to reply. + + message_thread_id (``int``, *optional*): + Unique identifier for the target message thread (topic) of the forum. + for forum supergroups only. + """ + + def __init__( + self, *, + reply_to_message_id: int = None, + message_thread_id: int = None + ): + super().__init__() + + self.reply_to_message_id = reply_to_message_id + self.message_thread_id = message_thread_id + + def write(self): + reply_to_msg_id = None + top_msg_id = None + if self.reply_to_message_id or self.reply_to_message_id: + if self.message_thread_id: + if not self.reply_to_message_id: + reply_to_msg_id = self.message_thread_id + else: + reply_to_msg_id = self.reply_to_message_id + top_msg_id = self.message_thread_id + else: + reply_to_msg_id = self.reply_to_message_id + return raw.types.InputReplyToMessage( + reply_to_msg_id=reply_to_msg_id, + top_msg_id=top_msg_id + ).write() + return None