From eb63475c3bf702f455089848ac5b6f52de5dc5d5 Mon Sep 17 00:00:00 2001 From: Shrimadhav U K Date: Thu, 27 Mar 2025 12:13:39 +0530 Subject: [PATCH] Add support for parsing Reaction as channel --- pyrogram/methods/messages/add_paid_message_reaction.py | 4 +++- pyrogram/methods/messages/set_reaction.py | 4 +++- pyrogram/types/messages_and_media/message.py | 2 +- pyrogram/types/messages_and_media/message_reactions.py | 6 ++++-- pyrogram/types/messages_and_media/reaction.py | 4 +++- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pyrogram/methods/messages/add_paid_message_reaction.py b/pyrogram/methods/messages/add_paid_message_reaction.py index 7a4f36f080..2fa3486ed8 100644 --- a/pyrogram/methods/messages/add_paid_message_reaction.py +++ b/pyrogram/methods/messages/add_paid_message_reaction.py @@ -67,8 +67,10 @@ async def add_paid_message_reaction( private=await paid_reaction_type.write(self) if paid_reaction_type else None ) ) + users = {i.id: i for i in getattr(r, "users", [])} + chats = {i.id: i for i in getattr(r, "chats", [])} for i in r.updates: if isinstance(i, raw.types.UpdateMessageReactions): - return types.MessageReactions._parse(self, i.reactions) + return types.MessageReactions._parse(self, i.reactions, users, chats) # TODO return r diff --git a/pyrogram/methods/messages/set_reaction.py b/pyrogram/methods/messages/set_reaction.py index c9cc801e02..ac14c57549 100644 --- a/pyrogram/methods/messages/set_reaction.py +++ b/pyrogram/methods/messages/set_reaction.py @@ -110,9 +110,11 @@ async def set_reaction( add_to_recent=add_to_recent ) ) + users = {i.id: i for i in getattr(r, "users", [])} + chats = {i.id: i for i in getattr(r, "chats", [])} for i in r.updates: if isinstance(i, raw.types.UpdateMessageReactions): - return types.MessageReactions._parse(self, i.reactions) + return types.MessageReactions._parse(self, i.reactions, users, chats) # TODO return r diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index d01178fbca..93ff6a7129 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -1310,7 +1310,7 @@ async def _parse( from_user = types.User._parse(client, users.get(user_id, None)) sender_chat = types.Chat._parse(client, message, users, chats, is_chat=False) if not from_user else None - reactions = types.MessageReactions._parse(client, message.reactions) + reactions = types.MessageReactions._parse(client, message.reactions, users, chats) parsed_message = Message( id=message.id, diff --git a/pyrogram/types/messages_and_media/message_reactions.py b/pyrogram/types/messages_and_media/message_reactions.py index a96dfe1927..843a0497ff 100644 --- a/pyrogram/types/messages_and_media/message_reactions.py +++ b/pyrogram/types/messages_and_media/message_reactions.py @@ -44,7 +44,9 @@ def __init__( @staticmethod def _parse( client: "pyrogram.Client", - message_reactions: Optional["raw.base.MessageReactions"] = None + message_reactions: Optional["raw.base.MessageReactions"] = None, + users, + chats ) -> Optional["MessageReactions"]: if not message_reactions: return None @@ -52,7 +54,7 @@ def _parse( return MessageReactions( client=client, reactions=[ - types.Reaction._parse_count(client, reaction) + types.Reaction._parse_count(client, reaction, users, chats) for reaction in message_reactions.results ] ) diff --git a/pyrogram/types/messages_and_media/reaction.py b/pyrogram/types/messages_and_media/reaction.py index b9778981be..6dfe97ab7d 100644 --- a/pyrogram/types/messages_and_media/reaction.py +++ b/pyrogram/types/messages_and_media/reaction.py @@ -63,7 +63,9 @@ def __init__( @staticmethod def _parse( client: "pyrogram.Client", - reaction: "raw.base.Reaction" + reaction: "raw.base.Reaction", + users, + chats ) -> "Reaction": if isinstance(reaction, raw.types.ReactionEmoji): return Reaction(