From 2fe0bccd4156fca9d96a4be1d67c5d1b9f326013 Mon Sep 17 00:00:00 2001 From: Erwin <147875779+Erwinex@users.noreply.github.com> Date: Thu, 14 Mar 2024 21:33:22 +0330 Subject: [PATCH 1/3] Add a method to ForwardMessages class Adding a method to ForwardMessages class that works like forward_messages but it won't mention the sender name. --- pyrogram/methods/messages/forward_messages.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/pyrogram/methods/messages/forward_messages.py b/pyrogram/methods/messages/forward_messages.py index 8635e17101..2bfe210a17 100644 --- a/pyrogram/methods/messages/forward_messages.py +++ b/pyrogram/methods/messages/forward_messages.py @@ -108,3 +108,50 @@ async def forward_messages( ) return types.List(forwarded_messages) if is_iterable else forwarded_messages[0] + + async def forward_messages_noqoute( + self: "pyrogram.Client", + chat_id: Union[int, str], + from_chat_id: Union[int, str], + message_ids: Union[int, Iterable[int]], + disable_notification: bool = None, + schedule_date: datetime = None, + protect_content: bool = None + ) -> Union["types.Message", List["types.Message"]]: + """ + exactly same as forward_messages method but this method won't show the sender name. + """ + + is_iterable = not isinstance(message_ids, int) + message_ids = list(message_ids) if is_iterable else [message_ids] + + r = await self.invoke( + raw.functions.messages.ForwardMessages( + to_peer=await self.resolve_peer(chat_id), + from_peer=await self.resolve_peer(from_chat_id), + id=message_ids, + silent=disable_notification or None, + random_id=[self.rnd_id() for _ in message_ids], + schedule_date=utils.datetime_to_timestamp(schedule_date), + noforwards=protect_content, + drop_author=True + ) + ) + + forwarded_messages = [] + + users = {i.id: i for i in r.users} + chats = {i.id: i for i in r.chats} + + for i in r.updates: + if isinstance(i, (raw.types.UpdateNewMessage, + raw.types.UpdateNewChannelMessage, + raw.types.UpdateNewScheduledMessage)): + forwarded_messages.append( + await types.Message._parse( + self, i.message, + users, chats + ) + ) + + return types.List(forwarded_messages) if is_iterable else forwarded_messages[0] From 76e8ef7728de86d1db7ac5b03cac357703552ff3 Mon Sep 17 00:00:00 2001 From: Erwin <147875779+Erwinex@users.noreply.github.com> Date: Fri, 15 Mar 2024 01:08:44 +0330 Subject: [PATCH 2/3] A better way suggested and the hide_author argument to current method instead of making new method. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Yeah it's what open source community is always find a better way 😄 --- pyrogram/methods/messages/forward_messages.py | 54 +++---------------- 1 file changed, 6 insertions(+), 48 deletions(-) diff --git a/pyrogram/methods/messages/forward_messages.py b/pyrogram/methods/messages/forward_messages.py index 2bfe210a17..7a2bc489f7 100644 --- a/pyrogram/methods/messages/forward_messages.py +++ b/pyrogram/methods/messages/forward_messages.py @@ -32,7 +32,8 @@ async def forward_messages( message_ids: Union[int, Iterable[int]], disable_notification: bool = None, schedule_date: datetime = None, - protect_content: bool = None + protect_content: bool = None, + hide_author: bool = False ) -> Union["types.Message", List["types.Message"]]: """Forward messages of any kind. @@ -62,6 +63,9 @@ async def forward_messages( protect_content (``bool``, *optional*): Protects the contents of the sent message from forwarding and saving. + hide_author (``bool``, *optional -> defualt = False*) + Hide the sender name if it is True. + Returns: :obj:`~pyrogram.types.Message` | List of :obj:`~pyrogram.types.Message`: In case *message_ids* was not a list, a single message is returned, otherwise a list of messages is returned. @@ -79,52 +83,6 @@ async def forward_messages( is_iterable = not isinstance(message_ids, int) message_ids = list(message_ids) if is_iterable else [message_ids] - r = await self.invoke( - raw.functions.messages.ForwardMessages( - to_peer=await self.resolve_peer(chat_id), - from_peer=await self.resolve_peer(from_chat_id), - id=message_ids, - silent=disable_notification or None, - random_id=[self.rnd_id() for _ in message_ids], - schedule_date=utils.datetime_to_timestamp(schedule_date), - noforwards=protect_content - ) - ) - - forwarded_messages = [] - - users = {i.id: i for i in r.users} - chats = {i.id: i for i in r.chats} - - for i in r.updates: - if isinstance(i, (raw.types.UpdateNewMessage, - raw.types.UpdateNewChannelMessage, - raw.types.UpdateNewScheduledMessage)): - forwarded_messages.append( - await types.Message._parse( - self, i.message, - users, chats - ) - ) - - return types.List(forwarded_messages) if is_iterable else forwarded_messages[0] - - async def forward_messages_noqoute( - self: "pyrogram.Client", - chat_id: Union[int, str], - from_chat_id: Union[int, str], - message_ids: Union[int, Iterable[int]], - disable_notification: bool = None, - schedule_date: datetime = None, - protect_content: bool = None - ) -> Union["types.Message", List["types.Message"]]: - """ - exactly same as forward_messages method but this method won't show the sender name. - """ - - is_iterable = not isinstance(message_ids, int) - message_ids = list(message_ids) if is_iterable else [message_ids] - r = await self.invoke( raw.functions.messages.ForwardMessages( to_peer=await self.resolve_peer(chat_id), @@ -134,7 +92,7 @@ async def forward_messages_noqoute( random_id=[self.rnd_id() for _ in message_ids], schedule_date=utils.datetime_to_timestamp(schedule_date), noforwards=protect_content, - drop_author=True + drop_author=hide_author ) ) From 301eafa42909b7b9496fcc9afbaf316bfbd28764 Mon Sep 17 00:00:00 2001 From: Erwin <147875779+Erwinex@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:12:56 +0330 Subject: [PATCH 3/3] Add hide_captions argument to hide the captions :) --- pyrogram/methods/messages/forward_messages.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pyrogram/methods/messages/forward_messages.py b/pyrogram/methods/messages/forward_messages.py index 7a2bc489f7..65f52582f0 100644 --- a/pyrogram/methods/messages/forward_messages.py +++ b/pyrogram/methods/messages/forward_messages.py @@ -33,7 +33,8 @@ async def forward_messages( disable_notification: bool = None, schedule_date: datetime = None, protect_content: bool = None, - hide_author: bool = False + hide_author: bool = False, + hide_captions: bool = False ) -> Union["types.Message", List["types.Message"]]: """Forward messages of any kind. @@ -66,6 +67,9 @@ async def forward_messages( hide_author (``bool``, *optional -> defualt = False*) Hide the sender name if it is True. + hide_captions (``bool``, *optional```only works for medias``` -> defualt = False*) + Hide the captions of medias name if it is True. + Returns: :obj:`~pyrogram.types.Message` | List of :obj:`~pyrogram.types.Message`: In case *message_ids* was not a list, a single message is returned, otherwise a list of messages is returned. @@ -92,7 +96,8 @@ async def forward_messages( random_id=[self.rnd_id() for _ in message_ids], schedule_date=utils.datetime_to_timestamp(schedule_date), noforwards=protect_content, - drop_author=hide_author + drop_author=hide_author, + drop_media_captions=hide_captions ) )