Skip to content

Commit 679b7c4

Browse files
authored
Add invite_link and approver_user to ChatEvent
1 parent 0981273 commit 679b7c4

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

pyrogram/enums/chat_event_action.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,11 @@ class ChatEventAction(AutoName):
7575
MEMBER_JOINED = auto()
7676
"a member joined by themselves. (see ``user``)"
7777

78-
# MEMBER_JOINED_BY_LINK = auto()
79-
""
78+
MEMBER_JOINED_BY_LINK = auto()
79+
"a new member joined the chat via an invite link (see ``invite_link``)"
80+
81+
MEMBER_JOINED_BY_REQUEST = auto()
82+
"a new member was accepted to the chat by an administrator (see ``invite_link`` and ``approver_user``)"
8083

8184
MEMBER_LEFT = auto()
8285
"a member left by themselves. (see ``user``)"

pyrogram/types/user_and_chats/chat_event.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,18 @@ class ChatEvent(Object):
8383
New invited chat member.
8484
For :obj:`~pyrogram.enums.ChatEventAction.MEMBER_INVITED` action only.
8585
86+
invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*):
87+
Invite link used to join the chat.
88+
For :obj:`~pyrogram.enums.ChatEventAction.MEMBER_JOINED_BY_LINK` and :obj:`~pyrogram.enums.ChatEventAction.MEMBER_JOINED_BY_REQUEST` actions only.
89+
90+
via_chat_folder_invite_link (``bool``, *optional*):
91+
True, if the user has joined the chat using an invite link for a chat folder.
92+
For :obj:`~pyrogram.enums.ChatEventAction.MEMBER_JOINED_BY_LINK` action only.
93+
94+
approver_user (:obj:`~pyrogram.types.User`, *optional*):
95+
User identifier of the chat administrator who approved the user join request
96+
For :obj:`~pyrogram.enums.ChatEventAction.MEMBER_JOINED_BY_REQUEST` action only.
97+
8698
old_administrator_privileges, new_administrator_privileges (:obj:`~pyrogram.types.ChatMember`, *optional*):
8799
Previous and new administrator privileges.
88100
For :obj:`~pyrogram.enums.ChatEventAction.ADMINISTRATOR_PRIVILEGES_CHANGED` action only.
@@ -166,6 +178,9 @@ def __init__(
166178
new_message: "types.Message" = None,
167179

168180
invited_member: "types.ChatMember" = None,
181+
invite_link: "types.ChatInviteLink" = None,
182+
via_chat_folder_invite_link: bool = None,
183+
approver_user: "types.User" = None,
169184

170185
old_administrator_privileges: "types.ChatMember" = None,
171186
new_administrator_privileges: "types.ChatMember" = None,
@@ -226,6 +241,9 @@ def __init__(
226241
self.new_message = new_message
227242

228243
self.invited_member = invited_member
244+
self.invite_link = invite_link
245+
self.via_chat_folder_invite_link = via_chat_folder_invite_link
246+
self.approver_user = approver_user
229247

230248
self.old_administrator_privileges = old_administrator_privileges
231249
self.new_administrator_privileges = new_administrator_privileges
@@ -292,6 +310,9 @@ async def _parse(
292310
new_message: Optional[types.Message] = None
293311

294312
invited_member: Optional[types.ChatMember] = None
313+
invite_link: Optional[types.ChatInviteLink] = None
314+
via_chat_folder_invite_link: Optional[bool] = None
315+
approver_user: Optional[types.User] = None
295316

296317
old_administrator_privileges: Optional[types.ChatMember] = None
297318
new_administrator_privileges: Optional[types.ChatMember] = None
@@ -442,6 +463,16 @@ async def _parse(
442463
deleted_invite_link = types.ChatInviteLink._parse(client, action.invite, users)
443464
action = enums.ChatEventAction.INVITE_LINK_DELETED
444465

466+
elif isinstance(action, raw.types.ChannelAdminLogEventActionParticipantJoinByInvite):
467+
invite_link = types.ChatInviteLink._parse(client, action.invite, users)
468+
via_chat_folder_invite_link = getattr(action, "via_chatlist", None)
469+
action = enums.ChatEventAction.MEMBER_JOINED_BY_LINK
470+
471+
elif isinstance(action, raw.types.ChannelAdminLogEventActionParticipantJoinByRequest):
472+
invite_link = types.ChatInviteLink._parse(client, action.invite, users)
473+
approver_user = types.User._parse(client, users[action.approved_by])
474+
action = enums.ChatEventAction.MEMBER_JOINED_BY_REQUEST
475+
445476
else:
446477
action = f"{enums.ChatEventAction.UNKNOWN}-{action.QUALNAME}"
447478

@@ -450,6 +481,7 @@ async def _parse(
450481
date=utils.timestamp_to_datetime(event.date),
451482
user=user,
452483
action=action,
484+
453485
old_description=old_description,
454486
new_description=new_description,
455487

@@ -477,6 +509,9 @@ async def _parse(
477509
new_message=new_message,
478510

479511
invited_member=invited_member,
512+
invite_link=invite_link,
513+
via_chat_folder_invite_link=via_chat_folder_invite_link,
514+
approver_user=approver_user,
480515

481516
old_administrator_privileges=old_administrator_privileges,
482517
new_administrator_privileges=new_administrator_privileges,
@@ -501,5 +536,5 @@ async def _parse(
501536
old_invite_link=old_invite_link,
502537
new_invite_link=new_invite_link,
503538
revoked_invite_link=revoked_invite_link,
504-
deleted_invite_link=deleted_invite_link
539+
deleted_invite_link=deleted_invite_link,
505540
)

0 commit comments

Comments
 (0)