diff --git a/pyrogram/methods/messages/edit_message_caption.py b/pyrogram/methods/messages/edit_message_caption.py index a902b03a..0900670c 100644 --- a/pyrogram/methods/messages/edit_message_caption.py +++ b/pyrogram/methods/messages/edit_message_caption.py @@ -32,7 +32,8 @@ async def edit_message_caption( parse_mode: Optional["enums.ParseMode"] = None, caption_entities: List["types.MessageEntity"] = None, invert_media: bool = False, - reply_markup: "types.InlineKeyboardMarkup" = None + reply_markup: "types.InlineKeyboardMarkup" = None, + business_connection_id: str = None ) -> "types.Message": """Edit the caption of media messages. @@ -64,6 +65,9 @@ async def edit_message_caption( reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*): An InlineKeyboardMarkup object. + business_connection_id (``str``, *optional*): + Unique identifier of the business connection. + Returns: :obj:`~pyrogram.types.Message`: On success, the edited message is returned. @@ -79,5 +83,6 @@ async def edit_message_caption( parse_mode=parse_mode, entities=caption_entities, invert_media=invert_media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=business_connection_id ) diff --git a/pyrogram/methods/messages/edit_message_media.py b/pyrogram/methods/messages/edit_message_media.py index e15218e4..96a526fc 100644 --- a/pyrogram/methods/messages/edit_message_media.py +++ b/pyrogram/methods/messages/edit_message_media.py @@ -37,7 +37,8 @@ async def edit_message_media( media: "types.InputMedia", reply_markup: "types.InlineKeyboardMarkup" = None, file_name: str = None, - invert_media: bool = False + invert_media: bool = False, + business_connection_id: str = None ) -> "types.Message": """Edit animation, audio, document, photo or video messages. @@ -69,6 +70,9 @@ async def edit_message_media( invert_media (``bool``, *optional*): Inverts the position of the media and caption. + business_connection_id (``str``, *optional*): + Unique identifier of the business connection. + Returns: :obj:`~pyrogram.types.Message`: On success, the edited message is returned. @@ -273,17 +277,24 @@ async def edit_message_media( else: media = utils.get_input_media_from_file_id(media.media, FileType.DOCUMENT) - r = await self.invoke( - raw.functions.messages.EditMessage( - peer=await self.resolve_peer(chat_id), - id=message_id, - media=media, - reply_markup=await reply_markup.write(self) if reply_markup else None, - message=message, - entities=entities, - invert_media=invert_media - ) + rpc = raw.functions.messages.EditMessage( + peer=await self.resolve_peer(chat_id), + id=message_id, + media=media, + reply_markup=await reply_markup.write(self) if reply_markup else None, + message=message, + entities=entities, + invert_media=invert_media ) + if business_connection_id is not None: + r = await self.invoke( + raw.functions.InvokeWithBusinessConnection( + connection_id=business_connection_id, + query=rpc + ) + ) + else: + r = await self.invoke(rpc) for i in r.updates: if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)): diff --git a/pyrogram/methods/messages/edit_message_reply_markup.py b/pyrogram/methods/messages/edit_message_reply_markup.py index c2c70da8..2cb56436 100644 --- a/pyrogram/methods/messages/edit_message_reply_markup.py +++ b/pyrogram/methods/messages/edit_message_reply_markup.py @@ -30,6 +30,7 @@ async def edit_message_reply_markup( chat_id: Union[int, str], message_id: int, reply_markup: "types.InlineKeyboardMarkup" = None, + business_connection_id: str = None ) -> "types.Message": """Edit only the reply markup of messages sent by the bot. @@ -48,6 +49,9 @@ async def edit_message_reply_markup( reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*): An InlineKeyboardMarkup object. + business_connection_id (``str``, *optional*): + Unique identifier of the business connection. + Returns: :obj:`~pyrogram.types.Message`: On success, the edited message is returned. @@ -62,13 +66,20 @@ async def edit_message_reply_markup( InlineKeyboardMarkup([[ InlineKeyboardButton("New button", callback_data="new_data")]])) """ - r = await self.invoke( - raw.functions.messages.EditMessage( - peer=await self.resolve_peer(chat_id), - id=message_id, - reply_markup=await reply_markup.write(self) if reply_markup else None, - ) + rpc = raw.functions.messages.EditMessage( + peer=await self.resolve_peer(chat_id), + id=message_id, + reply_markup=await reply_markup.write(self) if reply_markup else None ) + if business_connection_id is not None: + r = await self.invoke( + raw.functions.InvokeWithBusinessConnection( + connection_id=business_connection_id, + query=rpc + ) + ) + else: + r = await self.invoke(rpc) for i in r.updates: if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)): diff --git a/pyrogram/methods/messages/edit_message_text.py b/pyrogram/methods/messages/edit_message_text.py index cf5eb72f..58f003b6 100644 --- a/pyrogram/methods/messages/edit_message_text.py +++ b/pyrogram/methods/messages/edit_message_text.py @@ -35,7 +35,8 @@ async def edit_message_text( entities: List["types.MessageEntity"] = None, disable_web_page_preview: bool = None, invert_media: bool = None, - reply_markup: "types.InlineKeyboardMarkup" = None + reply_markup: "types.InlineKeyboardMarkup" = None, + business_connection_id: str = None ) -> "types.Message": """Edit the text of messages. @@ -70,6 +71,9 @@ async def edit_message_text( reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*): An InlineKeyboardMarkup object. + business_connection_id (``str``, *optional*): + Unique identifier of the business connection. + Returns: :obj:`~pyrogram.types.Message`: On success, the edited message is returned. @@ -85,16 +89,23 @@ async def edit_message_text( disable_web_page_preview=True) """ - r = await self.invoke( - raw.functions.messages.EditMessage( - peer=await self.resolve_peer(chat_id), - id=message_id, - no_webpage=disable_web_page_preview or None, - invert_media=invert_media, - reply_markup=await reply_markup.write(self) if reply_markup else None, - **await utils.parse_text_entities(self, text, parse_mode, entities) - ) + rpc = raw.functions.messages.EditMessage( + peer=await self.resolve_peer(chat_id), + id=message_id, + no_webpage=disable_web_page_preview or None, + invert_media=invert_media, + reply_markup=await reply_markup.write(self) if reply_markup else None, + **await utils.parse_text_entities(self, text, parse_mode, entities) ) + if business_connection_id is not None: + r = await self.invoke( + raw.functions.InvokeWithBusinessConnection( + connection_id=business_connection_id, + query=rpc + ) + ) + else: + r = await self.invoke(rpc) for i in r.updates: if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)): diff --git a/pyrogram/methods/messages/stop_poll.py b/pyrogram/methods/messages/stop_poll.py index 7c3b32e3..8a20c8ab 100644 --- a/pyrogram/methods/messages/stop_poll.py +++ b/pyrogram/methods/messages/stop_poll.py @@ -29,7 +29,8 @@ async def stop_poll( self: "pyrogram.Client", chat_id: Union[int, str], message_id: int, - reply_markup: "types.InlineKeyboardMarkup" = None + reply_markup: "types.InlineKeyboardMarkup" = None, + business_connection_id: str = None ) -> "types.Poll": """Stop a poll which was sent by you. @@ -50,6 +51,9 @@ async def stop_poll( reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*): An InlineKeyboardMarkup object. + business_connection_id (``str``, *optional*): + Unique identifier of the business connection. + Returns: :obj:`~pyrogram.types.Poll`: On success, the stopped poll with the final results is returned. @@ -60,20 +64,27 @@ async def stop_poll( """ poll = (await self.get_messages(chat_id, message_id)).poll - r = await self.invoke( - raw.functions.messages.EditMessage( - peer=await self.resolve_peer(chat_id), - id=message_id, - media=raw.types.InputMediaPoll( - poll=raw.types.Poll( - id=int(poll.id), - closed=True, - question="", - answers=[] - ) - ), - reply_markup=await reply_markup.write(self) if reply_markup else None - ) + rpc = raw.functions.messages.EditMessage( + peer=await self.resolve_peer(chat_id), + id=message_id, + media=raw.types.InputMediaPoll( + poll=raw.types.Poll( + id=int(poll.id), + closed=True, + question="", + answers=[] + ) + ), + reply_markup=await reply_markup.write(self) if reply_markup else None ) + if business_connection_id is not None: + r = await self.invoke( + raw.functions.InvokeWithBusinessConnection( + connection_id=business_connection_id, + query=rpc + ) + ) + else: + r = await self.invoke(rpc) return types.Poll._parse(self, r.updates[0]) diff --git a/pyrogram/types/bots_and_keyboards/callback_query.py b/pyrogram/types/bots_and_keyboards/callback_query.py index 9b110fa1..b99e4c27 100644 --- a/pyrogram/types/bots_and_keyboards/callback_query.py +++ b/pyrogram/types/bots_and_keyboards/callback_query.py @@ -215,7 +215,8 @@ async def edit_message_text( text=text, parse_mode=parse_mode, disable_web_page_preview=disable_web_page_preview, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) else: return await self._client.edit_inline_text( @@ -223,7 +224,8 @@ async def edit_message_text( text=text, parse_mode=parse_mode, disable_web_page_preview=disable_web_page_preview, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) async def edit_message_caption( @@ -254,7 +256,12 @@ async def edit_message_caption( Raises: RPCError: In case of a Telegram RPC error. """ - return await self.edit_message_text(caption, parse_mode, reply_markup=reply_markup) + return await self.edit_message_text( + caption, + parse_mode, + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) + ) async def edit_message_media( self, @@ -284,13 +291,15 @@ async def edit_message_media( chat_id=self.message.chat.id, message_id=self.message.id, media=media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) else: return await self._client.edit_inline_media( inline_message_id=self.inline_message_id, media=media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) async def edit_message_reply_markup( @@ -316,10 +325,12 @@ async def edit_message_reply_markup( return await self._client.edit_message_reply_markup( chat_id=self.message.chat.id, message_id=self.message.id, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) else: return await self._client.edit_inline_reply_markup( inline_message_id=self.inline_message_id, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=getattr(self.message, "business_connection_id", None) ) diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index f797fcbd..fa6fc76f 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -4121,7 +4121,8 @@ async def edit_text( entities=entities, disable_web_page_preview=disable_web_page_preview, invert_media=invert_media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=self.business_connection_id ) edit = edit_text @@ -4181,7 +4182,8 @@ async def edit_caption( parse_mode=parse_mode, caption_entities=caption_entities, invert_media=invert_media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=self.business_connection_id ) async def edit_media( @@ -4228,7 +4230,8 @@ async def edit_media( message_id=self.id, media=media, invert_media=invert_media, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=self.business_connection_id ) async def edit_reply_markup(self, reply_markup: "types.InlineKeyboardMarkup" = None) -> "Message": @@ -4263,7 +4266,8 @@ async def edit_reply_markup(self, reply_markup: "types.InlineKeyboardMarkup" = N return await self._client.edit_message_reply_markup( chat_id=self.chat.id, message_id=self.id, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=self.business_connection_id ) async def forward( diff --git a/pyrogram/types/messages_and_media/poll.py b/pyrogram/types/messages_and_media/poll.py index 001a9d8e..44193690 100644 --- a/pyrogram/types/messages_and_media/poll.py +++ b/pyrogram/types/messages_and_media/poll.py @@ -250,5 +250,6 @@ async def stop( return await self._client.stop_poll( chat_id=self.chat.id, message_id=self.id, - reply_markup=reply_markup + reply_markup=reply_markup, + business_connection_id=self.business_connection_id )