Add business_connection_id parameter in

edit_message_caption
edit_message_media
edit_message_reply_markup
edit_message_text
stop_poll

Message.edit_text
Message.edit_media
Message.edit_reply_markup
CallbackQuery.edit_message_text
CallbackQuery.edit_message_media
CallbackQuery.edit_message_reply_markup
Poll.stop

Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
shriMADhav U k 2024-06-20 05:44:42 +02:00 committed by wulan17
parent d501b66f93
commit 4d6fb409b8
No known key found for this signature in database
GPG key ID: 318CD6CD3A6AC0A5
8 changed files with 216 additions and 57 deletions

View file

@ -32,7 +32,8 @@ class EditMessageCaption:
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 @@ class EditMessageCaption:
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
An InlineKeyboardMarkup object.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Returns:
:obj:`~pyrogram.types.Message`: On success, the edited message is returned.
@ -79,5 +83,6 @@ class EditMessageCaption:
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
)

View file

@ -28,6 +28,8 @@ from pyrogram import types
from pyrogram import utils
from pyrogram.file_id import FileType
from .inline_session import get_session
class EditMessageMedia:
async def edit_message_media(
@ -37,7 +39,8 @@ class EditMessageMedia:
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 +72,9 @@ class EditMessageMedia:
invert_media (``bool``, *optional*):
Inverts the position of the media and caption.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Returns:
:obj:`~pyrogram.types.Message`: On success, the edited message is returned.
@ -273,17 +279,35 @@ class EditMessageMedia:
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
)
session = None
business_connection = None
if business_connection_id:
business_connection = self.business_user_connection_cache[business_connection_id]
if not business_connection:
business_connection = await self.get_business_connection(business_connection_id)
session = await get_session(
self,
business_connection._raw.connection.dc_id
)
if business_connection_id:
r = await session.invoke(
raw.functions.InvokeWithBusinessConnection(
query=rpc,
connection_id=business_connection_id
)
)
# await session.stop()
else:
r = await self.invoke(rpc)
for i in r.updates:
if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)):
@ -292,3 +316,18 @@ class EditMessageMedia:
{i.id: i for i in r.users},
{i.id: i for i in r.chats}
)
elif isinstance(
i,
(
raw.types.UpdateBotEditBusinessMessage
)
):
return await types.Message._parse(
self,
i.message,
{i.id: i for i in r.users},
{i.id: i for i in r.chats},
business_connection_id=getattr(i, "connection_id", business_connection_id),
raw_reply_to_message=i.reply_to_message,
replies=0
)

View file

@ -20,8 +20,9 @@
from typing import Union
import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import raw, types
from .inline_session import get_session
class EditMessageReplyMarkup:
@ -30,6 +31,7 @@ class EditMessageReplyMarkup:
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 +50,9 @@ class EditMessageReplyMarkup:
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
An InlineKeyboardMarkup object.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Returns:
:obj:`~pyrogram.types.Message`: On success, the edited message is returned.
@ -62,18 +67,57 @@ class EditMessageReplyMarkup:
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,
)
session = None
business_connection = None
if business_connection_id:
business_connection = self.business_user_connection_cache[business_connection_id]
if not business_connection:
business_connection = await self.get_business_connection(business_connection_id)
session = await get_session(
self,
business_connection._raw.connection.dc_id
)
if business_connection_id:
r = await session.invoke(
raw.functions.InvokeWithBusinessConnection(
query=rpc,
connection_id=business_connection_id
)
)
# await session.stop()
else:
r = await self.invoke(rpc)
for i in r.updates:
if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)):
if isinstance(
i,
(
raw.types.UpdateEditMessage,
raw.types.UpdateEditChannelMessage
)
):
return await types.Message._parse(
self, i.message,
{i.id: i for i in r.users},
{i.id: i for i in r.chats}
)
elif isinstance(
i,
(
raw.types.UpdateBotEditBusinessMessage
)
):
return await types.Message._parse(
self,
i.message,
{i.id: i for i in r.users},
{i.id: i for i in r.chats},
business_connection_id=getattr(i, "connection_id", business_connection_id),
raw_reply_to_message=i.reply_to_message,
replies=0
)

View file

@ -35,7 +35,8 @@ class EditMessageText:
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 @@ class EditMessageText:
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
An InlineKeyboardMarkup object.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Returns:
:obj:`~pyrogram.types.Message`: On success, the edited message is returned.
@ -85,16 +89,34 @@ class EditMessageText:
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)
)
session = None
business_connection = None
if business_connection_id:
business_connection = self.business_user_connection_cache[business_connection_id]
if not business_connection:
business_connection = await self.get_business_connection(business_connection_id)
session = await get_session(
self,
business_connection._raw.connection.dc_id
)
if business_connection_id:
r = await session.invoke(
raw.functions.InvokeWithBusinessConnection(
query=rpc,
connection_id=business_connection_id
)
)
# await session.stop()
else:
r = await self.invoke(rpc)
for i in r.updates:
if isinstance(i, (raw.types.UpdateEditMessage, raw.types.UpdateEditChannelMessage)):
@ -103,3 +125,18 @@ class EditMessageText:
{i.id: i for i in r.users},
{i.id: i for i in r.chats}
)
elif isinstance(
i,
(
raw.types.UpdateBotEditBusinessMessage
)
):
return await types.Message._parse(
self,
i.message,
{i.id: i for i in r.users},
{i.id: i for i in r.chats},
business_connection_id=getattr(i, "connection_id", business_connection_id),
raw_reply_to_message=i.reply_to_message,
replies=0
)

View file

@ -20,8 +20,9 @@
from typing import Union
import pyrogram
from pyrogram import raw
from pyrogram import types
from pyrogram import raw, types
from .inline_session import get_session
class StopPoll:
@ -29,7 +30,8 @@ class StopPoll:
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 +52,9 @@ class StopPoll:
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
An InlineKeyboardMarkup object.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Returns:
:obj:`~pyrogram.types.Poll`: On success, the stopped poll with the final results is returned.
@ -60,20 +65,38 @@ class StopPoll:
"""
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
)
session = None
business_connection = None
if business_connection_id:
business_connection = self.business_user_connection_cache[business_connection_id]
if not business_connection:
business_connection = await self.get_business_connection(business_connection_id)
session = await get_session(
self,
business_connection._raw.connection.dc_id
)
if business_connection_id:
r = await session.invoke(
raw.functions.InvokeWithBusinessConnection(
query=rpc,
connection_id=business_connection_id
)
)
# await session.stop()
else:
r = await self.invoke(rpc)
return types.Poll._parse(self, r.updates[0])

View file

@ -204,7 +204,8 @@ class CallbackQuery(Object, Update):
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=self.message.business_connection_id
)
else:
return await self._client.edit_inline_text(
@ -273,7 +274,8 @@ class CallbackQuery(Object, Update):
chat_id=self.message.chat.id,
message_id=self.message.id,
media=media,
reply_markup=reply_markup
reply_markup=reply_markup,
business_connection_id=self.message.business_connection_id
)
else:
return await self._client.edit_inline_media(
@ -305,7 +307,8 @@ class CallbackQuery(Object, Update):
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=self.message.business_connection_id,
)
else:
return await self._client.edit_inline_reply_markup(

View file

@ -4092,7 +4092,8 @@ class Message(Object, Update):
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
@ -4199,7 +4200,8 @@ class Message(Object, Update):
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":
@ -4234,7 +4236,8 @@ class Message(Object, Update):
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(

View file

@ -218,7 +218,8 @@ class Poll(Object, Update):
async def stop(
self,
reply_markup: "types.InlineKeyboardMarkup" = None
reply_markup: "types.InlineKeyboardMarkup" = None,
business_connection_id: str = None
) -> "types.Poll":
"""Bound method *stop* of :obj:`~pyrogram.types.Poll`.
@ -235,6 +236,9 @@ class Poll(Object, Update):
reply_markup (:obj:`~pyrogram.types.InlineKeyboardMarkup`, *optional*):
An InlineKeyboardMarkup object.
business_connection_id (``str``, *optional*):
Unique identifier of the business connection on behalf of which the message to be edited was sent
Example:
.. code-block:: python
@ -250,5 +254,6 @@ class Poll(Object, Update):
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=business_connection_id
)