diff --git a/pyrogram/types/user_and_chats/chat_member_updated.py b/pyrogram/types/user_and_chats/chat_member_updated.py index e0c135fa..6b3e73ea 100644 --- a/pyrogram/types/user_and_chats/chat_member_updated.py +++ b/pyrogram/types/user_and_chats/chat_member_updated.py @@ -48,6 +48,9 @@ class ChatMemberUpdated(Object, Update): invite_link (:obj:`~pyrogram.types.ChatInviteLink`, *optional*): Chat invite link, which was used by the user to join the chat; for joining by invite link events only. + + via_join_request (``bool``, *optional*): + True, if the user joined the chat after sending a direct join request and being approved by an administrator """ def __init__( @@ -60,6 +63,7 @@ class ChatMemberUpdated(Object, Update): old_chat_member: "types.ChatMember", new_chat_member: "types.ChatMember", invite_link: "types.ChatInviteLink" = None, + via_join_request: bool = None ): super().__init__(client) @@ -69,6 +73,7 @@ class ChatMemberUpdated(Object, Update): self.old_chat_member = old_chat_member self.new_chat_member = new_chat_member self.invite_link = invite_link + self.via_join_request = via_join_request @staticmethod def _parse( @@ -82,6 +87,7 @@ class ChatMemberUpdated(Object, Update): old_chat_member = None new_chat_member = None invite_link = None + via_join_request = None if update.prev_participant: old_chat_member = types.ChatMember._parse(client, update.prev_participant, users, chats) @@ -91,6 +97,8 @@ class ChatMemberUpdated(Object, Update): if update.invite: invite_link = types.ChatInviteLink._parse(client, update.invite, users) + if isinstance(update.invite, raw.types.ChatInvitePublicJoinRequests): + via_join_request = True return ChatMemberUpdated( chat=types.Chat._parse_chat(client, chats[chat_id]), @@ -99,5 +107,6 @@ class ChatMemberUpdated(Object, Update): old_chat_member=old_chat_member, new_chat_member=new_chat_member, invite_link=invite_link, + via_join_request=via_join_request, client=client )