diff --git a/pyrogram/methods/bots/send_inline_bot_result.py b/pyrogram/methods/bots/send_inline_bot_result.py index f7eb6f41..1b5b9404 100644 --- a/pyrogram/methods/bots/send_inline_bot_result.py +++ b/pyrogram/methods/bots/send_inline_bot_result.py @@ -102,6 +102,17 @@ class SendInlineBotResult: """ quote_text, quote_entities = (await utils.parse_text_entities(self, quote_text, parse_mode, quote_entities)).values() + reply_to = await utils.get_reply_to( + client=self, + reply_to_message_id=reply_to_message_id, + reply_to_chat_id=reply_to_chat_id, + reply_to_story_id=reply_to_story_id, + message_thread_id=message_thread_id, + quote_text=quote_text, + quote_entities=quote_entities, + quote_offset=quote_offset, + parse_mode=parse_mode, + ) r = await self.invoke( raw.functions.messages.SendInlineBotResult( peer=await self.resolve_peer(chat_id), @@ -109,15 +120,7 @@ class SendInlineBotResult: id=result_id, random_id=self.rnd_id(), silent=disable_notification or None, - reply_to=utils.get_reply_to( - reply_to_message_id=reply_to_message_id, - reply_to_peer=await self.resolve_peer(reply_to_chat_id) if reply_to_chat_id else None, - reply_to_story_id=reply_to_story_id, - message_thread_id=message_thread_id, - quote_text=quote_text, - quote_entities=quote_entities, - quote_offset=quote_offset, - ), + reply_to=reply_to, schedule_date=utils.datetime_to_timestamp(schedule_date), ) ) diff --git a/pyrogram/methods/messages/copy_media_group.py b/pyrogram/methods/messages/copy_media_group.py index cdd75b6e..485f77f8 100644 --- a/pyrogram/methods/messages/copy_media_group.py +++ b/pyrogram/methods/messages/copy_media_group.py @@ -34,6 +34,7 @@ class CopyMediaGroup: has_spoilers: Union[List[bool], bool] = None, disable_notification: bool = None, message_thread_id: int = None, + send_as: Union[int, str] = None, reply_to_message_id: int = None, reply_to_chat_id: Union[int, str] = None, reply_to_story_id: int = None, @@ -44,6 +45,8 @@ class CopyMediaGroup: schedule_date: datetime = None, invert_media: bool = None, protect_content: bool = None, + allow_paid_broadcast: bool = None, + message_effect_id: int = None, ) -> List["types.Message"]: """Copy a media group by providing one of the message ids. @@ -73,6 +76,9 @@ class CopyMediaGroup: If a ``string`` is passed, it becomes a caption only for the first media. If a list of ``string`` passed, each element becomes caption for each media element. You can pass ``None`` in list to keep the original caption (see examples below). + + has_spoilers (``bool``, *optional*): + Pass True if the photo needs to be covered with a spoiler animation. disable_notification (``bool``, *optional*): Sends the message silently. @@ -82,6 +88,10 @@ class CopyMediaGroup: Unique identifier for the target message thread (topic) of the forum. For supergroups only. + send_as (``int`` | ``str``): + Unique identifier (int) or username (str) of the chat or channel to send the message as. + You can use this to send the message on behalf of a chat or channel where you have appropriate permissions. + reply_to_message_id (``int``, *optional*): If the message is a reply, ID of the original message. @@ -113,6 +123,12 @@ class CopyMediaGroup: protect_content (``bool``, *optional*): Protects the contents of the sent message from forwarding and saving + allow_paid_broadcast (``bool``, *optional*): + Pass True to allow the message to ignore regular broadcast limits for a small fee; for bots only + + message_effect_id (``int`` ``64-bit``, *optional*): + Unique identifier of the message effect to be added to the message; for private chats only. + Returns: List of :obj:`~pyrogram.types.Message`: On success, a list of copied messages is returned. @@ -169,23 +185,29 @@ class CopyMediaGroup: ) ) + reply_to = await utils.get_reply_to( + client=self, + reply_to_message_id=reply_to_message_id, + message_thread_id=message_thread_id, + reply_to_chat_id=reply_to_chat_id, + reply_to_story_id=reply_to_story_id, + quote_text=quote_text, + quote_entities=quote_entities, + quote_offset=quote_offset, + ) + r = await self.invoke( raw.functions.messages.SendMultiMedia( peer=await self.resolve_peer(chat_id), multi_media=multi_media, silent=disable_notification or None, - reply_to=utils.get_reply_to( - reply_to_message_id=reply_to_message_id, - message_thread_id=message_thread_id, - reply_to_peer=await self.resolve_peer(reply_to_chat_id) if reply_to_chat_id else None, - reply_to_story_id=reply_to_story_id, - quote_text=quote_text, - quote_entities=quote_entities, - quote_offset=quote_offset, - ), + reply_to=reply_to, + send_as=await self.resolve_peer(send_as) if send_as else None, schedule_date=utils.datetime_to_timestamp(schedule_date), noforwards=protect_content, - invert_media=invert_media + invert_media=invert_media, + allow_paid_floodskip=allow_paid_broadcast, + effect=message_effect_id, ), sleep_threshold=60 ) @@ -202,4 +224,4 @@ class CopyMediaGroup: users=r.users, chats=r.chats ) - ) \ No newline at end of file + ) 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 8d0b5667..8b74bd9b 100644 --- a/pyrogram/types/input_message_content/input_reply_to_message.py +++ b/pyrogram/types/input_message_content/input_reply_to_message.py @@ -55,7 +55,8 @@ class InputReplyToMessage(Object): "raw.types.InputPeerUser" ] = None, quote_text: str = None, - quote_entities: List["raw.base.MessageEntity"] = None + quote_entities: List["raw.base.MessageEntity"] = None, + quote_offset: int = None, ): super().__init__() @@ -64,6 +65,7 @@ class InputReplyToMessage(Object): self.reply_to_chat = reply_to_chat self.quote_text = quote_text self.quote_entities = quote_entities + self.quote_offset = quote_offset def write(self): reply_to_msg_id = None @@ -82,6 +84,7 @@ class InputReplyToMessage(Object): top_msg_id=top_msg_id, reply_to_peer_id=self.reply_to_chat, quote_text=self.quote_text, - quote_entities=self.quote_entities + quote_entities=self.quote_entities, + quote_offset=self.quote_offset, ).write() return None diff --git a/pyrogram/utils.py b/pyrogram/utils.py index 054dd689..6fc51b86 100644 --- a/pyrogram/utils.py +++ b/pyrogram/utils.py @@ -54,7 +54,8 @@ async def ainput(prompt: str = "", *, hide: bool = False): def get_input_media_from_file_id( file_id: str, expected_file_type: FileType = None, - ttl_seconds: int = None + ttl_seconds: int = None, + has_spoiler: bool = None ) -> Union["raw.types.InputMediaPhoto", "raw.types.InputMediaDocument"]: try: decoded = FileId.decode(file_id) @@ -79,6 +80,7 @@ def get_input_media_from_file_id( access_hash=decoded.access_hash, file_reference=decoded.file_reference ), + spoiler=has_spoiler, ttl_seconds=ttl_seconds ) @@ -89,6 +91,7 @@ def get_input_media_from_file_id( access_hash=decoded.access_hash, file_reference=decoded.file_reference ), + spoiler=has_spoiler, ttl_seconds=ttl_seconds ) @@ -502,7 +505,8 @@ async def get_reply_to( reply_to_chat_id: Union[int,str] = None, quote_text: str = None, quote_entities: List["types.MessageEntity"] = None, - parse_mode: "enums.ParseMode" = None + quote_offset: int = None, + parse_mode: "enums.ParseMode" = None, ): reply_to = None reply_to_chat = None @@ -515,7 +519,8 @@ async def get_reply_to( message_thread_id=message_thread_id, reply_to_chat=reply_to_chat, quote_text=text, - quote_entities=entities + quote_entities=entities, + quote_offset=quote_offset, ) if reply_to_story_id: peer = await client.resolve_peer(chat_id)