mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
pyrofork: Add support for parsing Reaction as channel
Signed-off-by: wulan17 <wulan17@komodos.id>
This commit is contained in:
parent
24d3ea0e48
commit
f5296145cd
5 changed files with 31 additions and 10 deletions
|
|
@ -109,9 +109,11 @@ class SendReaction:
|
||||||
add_to_recent=add_to_recent
|
add_to_recent=add_to_recent
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
users = {i.id: i for i in r.users}
|
||||||
|
chats = {i.id: i for i in r.chats}
|
||||||
for i in r.updates:
|
for i in r.updates:
|
||||||
if isinstance(i, raw.types.UpdateMessageReactions):
|
if isinstance(i, raw.types.UpdateMessageReactions):
|
||||||
return types.MessageReactions._parse(self, i.reactions)
|
return types.MessageReactions._parse(self, i.reactions, users, chats)
|
||||||
elif story_id is not None:
|
elif story_id is not None:
|
||||||
await self.invoke(
|
await self.invoke(
|
||||||
raw.functions.stories.SendReaction(
|
raw.functions.stories.SendReaction(
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,8 @@ class SendPaidReaction:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
users = {i.id: i for i in r.users}
|
users = {i.id: i for i in r.users}
|
||||||
|
chats = {i.id: i for i in r.chats}
|
||||||
|
|
||||||
for i in r.updates:
|
for i in r.updates:
|
||||||
if isinstance(i, raw.types.UpdateMessageReactions):
|
if isinstance(i, raw.types.UpdateMessageReactions):
|
||||||
return types.MessageReactions._parse(self, i.reactions, users)
|
return types.MessageReactions._parse(self, i.reactions, users, chats)
|
||||||
|
|
|
||||||
|
|
@ -1143,7 +1143,7 @@ class Message(Object, Update):
|
||||||
from_user = types.User._parse(client, users.get(user_id, None))
|
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
|
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, users)
|
reactions = types.MessageReactions._parse(client, message.reactions, users, chats)
|
||||||
|
|
||||||
if message.via_business_bot_id:
|
if message.via_business_bot_id:
|
||||||
sender_business_bot = types.User._parse(client, users.get(message.via_business_bot_id, None))
|
sender_business_bot = types.User._parse(client, users.get(message.via_business_bot_id, None))
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@ class MessageReactions(Object):
|
||||||
def _parse(
|
def _parse(
|
||||||
client: "pyrogram.Client",
|
client: "pyrogram.Client",
|
||||||
message_reactions: Optional["raw.base.MessageReactions"] = None,
|
message_reactions: Optional["raw.base.MessageReactions"] = None,
|
||||||
users: Optional[Dict[int, "raw.types.User"]] = None
|
users: Optional[Dict[int, "raw.types.User"]] = None,
|
||||||
|
chats: Dict[int, "raw.types.Chat"] = None
|
||||||
) -> Optional["MessageReactions"]:
|
) -> Optional["MessageReactions"]:
|
||||||
if not message_reactions:
|
if not message_reactions:
|
||||||
return None
|
return None
|
||||||
|
|
@ -63,7 +64,7 @@ class MessageReactions(Object):
|
||||||
for reaction in message_reactions.results
|
for reaction in message_reactions.results
|
||||||
],
|
],
|
||||||
top_reactors=[
|
top_reactors=[
|
||||||
types.MessageReactor._parse(client, reactor, users)
|
types.MessageReactor._parse(client, reactor, users, chats)
|
||||||
for reactor in message_reactions.top_reactors
|
for reactor in message_reactions.top_reactors
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,9 @@ class MessageReactor(Object):
|
||||||
|
|
||||||
from_user (:obj:`~pyrogram.types.User`, *optional*):
|
from_user (:obj:`~pyrogram.types.User`, *optional*):
|
||||||
Information about the reactor.
|
Information about the reactor.
|
||||||
|
|
||||||
|
sender_chat (:obj:`~pyrogram.types.Chat`, *optional*):
|
||||||
|
Information about the sender chat.
|
||||||
"""
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|
@ -51,7 +54,8 @@ class MessageReactor(Object):
|
||||||
is_top: bool = None,
|
is_top: bool = None,
|
||||||
is_my: bool = None,
|
is_my: bool = None,
|
||||||
is_anonymous: bool = None,
|
is_anonymous: bool = None,
|
||||||
from_user: "types.User" = None
|
from_user: "types.User" = None,
|
||||||
|
sender_chat: "types.Chat" = None
|
||||||
):
|
):
|
||||||
super().__init__(client)
|
super().__init__(client)
|
||||||
|
|
||||||
|
|
@ -60,26 +64,39 @@ class MessageReactor(Object):
|
||||||
self.is_my = is_my
|
self.is_my = is_my
|
||||||
self.is_anonymous = is_anonymous
|
self.is_anonymous = is_anonymous
|
||||||
self.from_user = from_user
|
self.from_user = from_user
|
||||||
|
self.sender_chat = sender_chat
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse(
|
def _parse(
|
||||||
client: "pyrogram.Client",
|
client: "pyrogram.Client",
|
||||||
message_reactor: Optional["raw.base.MessageReactor"] = None,
|
message_reactor: Optional["raw.base.MessageReactor"] = None,
|
||||||
users: Dict[int, "raw.types.User"] = None
|
users: Dict[int, "raw.types.User"] = None,
|
||||||
|
chats: Dict[int, "raw.types.Chat"] = None
|
||||||
) -> Optional["MessageReactor"]:
|
) -> Optional["MessageReactor"]:
|
||||||
if not message_reactor:
|
if not message_reactor:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
is_anonymous = message_reactor.anonymous
|
is_anonymous = message_reactor.anonymous
|
||||||
from_user = None
|
from_user = None
|
||||||
|
sender_chat = None
|
||||||
if not is_anonymous:
|
if not is_anonymous:
|
||||||
from_user = types.User._parse(client, users.get(message_reactor.peer_id.user_id))
|
if isinstance(message_reactor.peer, raw.types.PeerUser):
|
||||||
|
from_user = types.User._parse(
|
||||||
|
client,
|
||||||
|
users.get(message_reactor.peer_id.user_id)
|
||||||
|
)
|
||||||
|
elif isinstance(message_reactor.peer, raw.types.PeerChannel):
|
||||||
|
sender_chat = types.Chat._parse_channel_chat(
|
||||||
|
client,
|
||||||
|
chats.get(message_reactor.peer_id.channel_id)
|
||||||
|
)
|
||||||
|
|
||||||
return MessageReactor(
|
return MessageReactor(
|
||||||
client=client,
|
client=client,
|
||||||
amount=message_reactor.count,
|
amount=message_reactor.count,
|
||||||
is_top=message_reactor.top,
|
is_top=message_reactor.top,
|
||||||
is_my=message_reactor.my,
|
is_my=message_reactor.my,
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
from_user=from_user
|
from_user=from_user,
|
||||||
|
sender_chat=sender_chat
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue