diff --git a/pyrogram/methods/chats/pin_chat_message.py b/pyrogram/methods/chats/pin_chat_message.py index d4d6b040..016a19a7 100644 --- a/pyrogram/methods/chats/pin_chat_message.py +++ b/pyrogram/methods/chats/pin_chat_message.py @@ -18,7 +18,7 @@ from typing import Union -from pyrogram import raw +from pyrogram import raw, types from pyrogram.scaffold import Scaffold @@ -29,7 +29,7 @@ class PinChatMessage(Scaffold): message_id: int, disable_notification: bool = False, both_sides: bool = False, - ) -> bool: + ) -> "types.Message": """Pin a message in a group, channel or your own chat. You must be an administrator in the chat for this to work and must have the "can_pin_messages" admin right in the supergroup or "can_edit_messages" admin right in the channel. @@ -50,7 +50,7 @@ class PinChatMessage(Scaffold): Applicable to private chats only. Defaults to False. Returns: - ``bool``: True on success. + :obj:`~pyrogram.types.Message`: On success, the service message is returned. Example: .. code-block:: python @@ -61,7 +61,7 @@ class PinChatMessage(Scaffold): # Pin without notification app.pin_chat_message(chat_id, message_id, disable_notification=True) """ - await self.send( + r = await self.send( raw.functions.messages.UpdatePinnedMessage( peer=await self.resolve_peer(chat_id), id=message_id, @@ -70,4 +70,10 @@ class PinChatMessage(Scaffold): ) ) - return True + users = {u.id: u for u in r.users} + chats = {c.id: c for c in r.chats} + + for i in r.updates: + if isinstance(i, (raw.types.UpdateNewMessage, + raw.types.UpdateNewChannelMessage)): + return await types.Message._parse(self, i.message, users, chats) diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index df5f2dd1..ea54231d 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -3423,7 +3423,7 @@ class Message(Object, Update): options=option ) - async def pin(self, disable_notification: bool = False, both_sides: bool = False) -> bool: + async def pin(self, disable_notification: bool = False, both_sides: bool = False) -> "types.Message": """Bound method *pin* of :obj:`~pyrogram.types.Message`. Use as a shortcut for: @@ -3450,7 +3450,7 @@ class Message(Object, Update): Applicable to private chats only. Defaults to False. Returns: - True on success. + :obj:`~pyrogram.types.Message`: On success, the service message is returned. Raises: RPCError: In case of a Telegram RPC error.