2020from typing import List , Optional
2121
2222import pyrogram
23- from pyrogram import raw
24- from pyrogram import types , utils , enums
23+ from pyrogram import raw , types , utils , enums
2524from ..object import Object
2625
2726
@@ -66,6 +65,10 @@ class ChatEvent(Object):
6665 old_username, new_username (``str``, *optional*):
6766 Previous and new chat username.
6867 For :obj:`~pyrogram.enums.ChatEventAction.USERNAME_CHANGED` action only.
68+
69+ old_usernames, new_usernames (List of :obj:`~pyrogram.types.Username`, *optional*):
70+ Previous and new chat usernames.
71+ For :obj:`~pyrogram.enums.ChatEventAction.USERNAMES_CHANGED` action only.
6972
7073 old_chat_permissions, new_chat_permissions (:obj:`~pyrogram.types.ChatPermissions`, *optional*):
7174 Previous and new default chat permissions.
@@ -142,6 +145,11 @@ class ChatEvent(Object):
142145 deleted_invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*):
143146 Deleted invite link.
144147 For :obj:`~pyrogram.enums.ChatEventAction.INVITE_LINK_DELETED` action only.
148+
149+ old_chat_member, new_chat_member (:obj:`~pyrogram.types.ChatMember`, *optional*):
150+ Affected chat member status of the user.
151+ For :obj:`~pyrogram.enums.ChatEventAction.MEMBER_SUBSCRIPTION_EXTENDED` action only.
152+
145153 """
146154
147155 def __init__ (
@@ -169,6 +177,9 @@ def __init__(
169177 old_username : str = None ,
170178 new_username : str = None ,
171179
180+ old_usernames : List ["types.Username" ] = None ,
181+ new_usernames : List ["types.Username" ] = None ,
182+
172183 old_chat_permissions : "types.ChatPermissions" = None ,
173184 new_chat_permissions : "types.ChatPermissions" = None ,
174185
@@ -205,7 +216,10 @@ def __init__(
205216 old_invite_link : "types.ChatInviteLink" = None ,
206217 new_invite_link : "types.ChatInviteLink" = None ,
207218 revoked_invite_link : "types.ChatInviteLink" = None ,
208- deleted_invite_link : "types.ChatInviteLink" = None
219+ deleted_invite_link : "types.ChatInviteLink" = None ,
220+
221+ old_chat_member : "types.ChatMember" = None ,
222+ new_chat_member : "types.ChatMember" = None ,
209223 ):
210224 super ().__init__ ()
211225
@@ -232,6 +246,9 @@ def __init__(
232246 self .old_username = old_username
233247 self .new_username = new_username
234248
249+ self .old_usernames = old_usernames
250+ self .new_usernames = new_usernames
251+
235252 self .old_chat_permissions = old_chat_permissions
236253 self .new_chat_permissions = new_chat_permissions
237254
@@ -270,6 +287,9 @@ def __init__(
270287 self .revoked_invite_link = revoked_invite_link
271288 self .deleted_invite_link = deleted_invite_link
272289
290+ self .old_chat_member = old_chat_member
291+ self .new_chat_member = new_chat_member
292+
273293 @staticmethod
274294 async def _parse (
275295 client : "pyrogram.Client" ,
@@ -301,6 +321,9 @@ async def _parse(
301321 old_username : Optional [str ] = None
302322 new_username : Optional [str ] = None
303323
324+ old_usernames : Optional [types .List [types .Username ]] = None
325+ new_usernames : Optional [types .List [types .Username ]] = None
326+
304327 old_chat_permissions : Optional [types .ChatPermissions ] = None
305328 new_chat_permissions : Optional [types .ChatPermissions ] = None
306329
@@ -339,6 +362,9 @@ async def _parse(
339362 revoked_invite_link : Optional [types .ChatInviteLink ] = None
340363 deleted_invite_link : Optional [types .ChatInviteLink ] = None
341364
365+ old_chat_member : Optional [types .ChatMember ] = None
366+ new_chat_member : Optional [types .ChatMember ] = None
367+
342368 if isinstance (action , raw .types .ChannelAdminLogEventActionChangeAbout ):
343369 old_description = action .prev_value
344370 new_description = action .new_value
@@ -369,6 +395,11 @@ async def _parse(
369395 new_username = action .new_value
370396 action = enums .ChatEventAction .USERNAME_CHANGED
371397
398+ elif isinstance (action , raw .types .ChannelAdminLogEventActionChangeUsernames ):
399+ old_usernames = types .List ([types .Username (username = p ) for p in action .prev_value ])
400+ new_usernames = types .List ([types .Username (username = n ) for n in action .new_value ])
401+ action = enums .ChatEventAction .USERNAMES_CHANGED
402+
372403 elif isinstance (action , raw .types .ChannelAdminLogEventActionDefaultBannedRights ):
373404 old_chat_permissions = types .ChatPermissions ._parse (action .prev_banned_rights )
374405 new_chat_permissions = types .ChatPermissions ._parse (action .new_banned_rights )
@@ -473,6 +504,11 @@ async def _parse(
473504 approver_user = types .User ._parse (client , users [action .approved_by ])
474505 action = enums .ChatEventAction .MEMBER_JOINED_BY_REQUEST
475506
507+ elif isinstance (action , raw .types .ChannelAdminLogEventActionParticipantSubExtend ):
508+ old_chat_member = types .ChatMember ._parse (client , action .prev_participant , users , chats )
509+ new_chat_member = types .ChatMember ._parse (client , action .new_participant , users , chats )
510+ action = enums .ChatEventAction .MEMBER_SUBSCRIPTION_EXTENDED
511+
476512 else :
477513 action = f"{ enums .ChatEventAction .UNKNOWN } -{ action .QUALNAME } "
478514
@@ -500,6 +536,9 @@ async def _parse(
500536 old_username = old_username ,
501537 new_username = new_username ,
502538
539+ old_usernames = old_usernames ,
540+ new_usernames = new_usernames ,
541+
503542 old_chat_permissions = old_chat_permissions ,
504543 new_chat_permissions = new_chat_permissions ,
505544
@@ -537,4 +576,7 @@ async def _parse(
537576 new_invite_link = new_invite_link ,
538577 revoked_invite_link = revoked_invite_link ,
539578 deleted_invite_link = deleted_invite_link ,
579+
580+ old_chat_member = old_chat_member ,
581+ new_chat_member = new_chat_member ,
540582 )
0 commit comments