mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
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:
parent
d501b66f93
commit
4d6fb409b8
8 changed files with 216 additions and 57 deletions
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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])
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue