Skip to content

Commit a94c3bb

Browse files
committed
Add support for invite link chat log events (edit, revoke, delete)
1 parent 1c52d21 commit a94c3bb

2 files changed

Lines changed: 61 additions & 7 deletions

File tree

pyrogram/methods/chats/get_chat_event_log.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ async def get_chat_event_log(
7777
min_id=0,
7878
max_id=offset_id,
7979
limit=limit,
80-
events_filter=filters.write(),
80+
events_filter=filters.write() if filters else None,
8181
admins=(
8282
[await self.resolve_peer(i) for i in user_ids]
8383
if user_ids is not None

pyrogram/types/user_and_chats/chat_event.py

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ class ChatEventAction(AutoName):
4343
MESSAGE_DELETED = auto()
4444
# VOICE_CHAT_DISCARDED = auto()
4545
MESSAGE_EDITED = auto()
46-
# LINK_DELETED = auto()
47-
# LINK_EDITED = auto()
48-
# LINK_REVOKED = auto()
46+
INVITE_LINK_EDITED = auto()
47+
INVITE_LINK_REVOKED = auto()
48+
INVITE_LINK_DELETED = auto()
4949
MEMBER_INVITED = auto()
5050
MEMBER_JOINED = auto()
5151
# MEMBER_JOINED_BY_LINK = auto()
@@ -143,6 +143,15 @@ class ChatEvent(Object):
143143
- "message_unpinned": a message has been unpinned
144144
(see *unpinned_message* below).
145145
146+
- "invite_link_edited": an invite link has been edited
147+
(see *edited_invite_link* below).
148+
149+
- "invite_link_revoked": an invite link has been revoked
150+
(see *revoked_invite_link* below).
151+
152+
- "invite_link_deleted": an invite link has been deleted
153+
(see *deleted_invite_link* below).
154+
146155
user (:obj:`~pyrogram.types.User`):
147156
User that triggered the event.
148157
@@ -211,7 +220,7 @@ class ChatEvent(Object):
211220
For "signatures_enabled" only.
212221
213222
old_slow_mode, new_slow_mode (``int``, *optional*):
214-
Previous slow mode value in seconds.
223+
Previous and new slow mode value in seconds.
215224
For "slow_mode_changed" only.
216225
217226
pinned_message (:obj:`~pyrogram.types.Message`, *optional*):
@@ -221,6 +230,18 @@ class ChatEvent(Object):
221230
unpinned_message (:obj:`~pyrogram.types.Message`, *optional*):
222231
Unpinned message.
223232
For "unpinned_message" only.
233+
234+
old_invite_link, new_invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*):
235+
Previous and new edited invite link.
236+
For "invite_link_edited" only.
237+
238+
revoked_invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*):
239+
Revoked invite link.
240+
For "invite_link_revoked" only.
241+
242+
deleted_invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*):
243+
Deleted invite link.
244+
For "invite_link_deleted" only.
224245
"""
225246

226247
def __init__(
@@ -276,7 +297,12 @@ def __init__(
276297
new_slow_mode: int = None,
277298

278299
pinned_message: "types.Message" = None,
279-
unpinned_message: "types.Message" = None
300+
unpinned_message: "types.Message" = None,
301+
302+
old_invite_link: "types.ChatInviteLink" = None,
303+
new_invite_link: "types.ChatInviteLink" = None,
304+
revoked_invite_link: "types.ChatInviteLink" = None,
305+
deleted_invite_link: "types.ChatInviteLink" = None,
280306
):
281307
super().__init__()
282308

@@ -333,6 +359,11 @@ def __init__(
333359
self.pinned_message = pinned_message
334360
self.unpinned_message = unpinned_message
335361

362+
self.old_invite_link = old_invite_link
363+
self.new_invite_link = new_invite_link
364+
self.revoked_invite_link = revoked_invite_link
365+
self.deleted_invite_link = deleted_invite_link
366+
336367
@staticmethod
337368
async def _parse(
338369
client: "pyrogram.Client",
@@ -394,6 +425,11 @@ async def _parse(
394425
pinned_message: Optional[types.Message] = None
395426
unpinned_message: Optional[types.Message] = None
396427

428+
old_invite_link: Optional[types.ChatInviteLink] = None
429+
new_invite_link: Optional[types.ChatInviteLink] = None
430+
revoked_invite_link: Optional[types.ChatInviteLink] = None
431+
deleted_invite_link: Optional[types.ChatInviteLink] = None
432+
397433
if isinstance(action, raw.types.ChannelAdminLogEventActionChangeAbout):
398434
old_description = action.prev_value
399435
new_description = action.new_value
@@ -489,6 +525,19 @@ async def _parse(
489525
unpinned_message = await types.Message._parse(client, message, users, chats)
490526
action = ChatEventAction.MESSAGE_UNPINNED.value
491527

528+
elif isinstance(action, raw.types.ChannelAdminLogEventActionExportedInviteEdit):
529+
old_invite_link = types.ChatInviteLink._parse(client, action.prev_invite, users)
530+
new_invite_link = types.ChatInviteLink._parse(client, action.new_invite, users)
531+
action = ChatEventAction.INVITE_LINK_EDITED.value
532+
533+
elif isinstance(action, raw.types.ChannelAdminLogEventActionExportedInviteRevoke):
534+
revoked_invite_link = types.ChatInviteLink._parse(client, action.invite, users)
535+
action = ChatEventAction.INVITE_LINK_REVOKED
536+
537+
elif isinstance(action, raw.types.ChannelAdminLogEventActionExportedInviteDelete):
538+
deleted_invite_link = types.ChatInviteLink._parse(client, action.invite, users)
539+
action = ChatEventAction.INVITE_LINK_DELETED.value
540+
492541
else:
493542
action = f"{ChatEventAction.UNKNOWN.value}-{action.QUALNAME}"
494543

@@ -543,5 +592,10 @@ async def _parse(
543592
new_slow_mode=new_slow_mode,
544593

545594
pinned_message=pinned_message,
546-
unpinned_message=unpinned_message
595+
unpinned_message=unpinned_message,
596+
597+
old_invite_link=old_invite_link,
598+
new_invite_link=new_invite_link,
599+
revoked_invite_link=revoked_invite_link,
600+
deleted_invite_link=deleted_invite_link
547601
)

0 commit comments

Comments
 (0)