diff --git a/pyrogram/enums/message_service_type.py b/pyrogram/enums/message_service_type.py index 84bae961..f6933003 100644 --- a/pyrogram/enums/message_service_type.py +++ b/pyrogram/enums/message_service_type.py @@ -27,6 +27,9 @@ class MessageServiceType(AutoName): NEW_CHAT_MEMBERS = auto() "New members join" + CHAT_JOINED_BY_REQUEST = auto() + "a member chat join request approved by admin." + LEFT_CHAT_MEMBERS = auto() "Left chat members" diff --git a/pyrogram/types/messages_and_media/message.py b/pyrogram/types/messages_and_media/message.py index 06dd9a24..373ed236 100644 --- a/pyrogram/types/messages_and_media/message.py +++ b/pyrogram/types/messages_and_media/message.py @@ -215,6 +215,9 @@ class Message(Object, Update): New members that were added to the group or supergroup and information about them (the bot itself may be one of these members). + chat_joined_by_request (:obj:`~pyrogram.types.ChatJoinedByRequest`, *optional*): + New members chat join request has been approved in group or supergroup. + left_chat_member (:obj:`~pyrogram.types.User`, *optional*): A member was removed from the group, information about them (this member may be the bot itself). @@ -378,6 +381,7 @@ class Message(Object, Update): poll: "types.Poll" = None, dice: "types.Dice" = None, new_chat_members: List["types.User"] = None, + chat_joined_by_request: "types.ChatJoinedByRequest" = None, left_chat_member: "types.User" = None, new_chat_title: str = None, new_chat_photo: "types.Photo" = None, @@ -461,6 +465,7 @@ class Message(Object, Update): self.poll = poll self.dice = dice self.new_chat_members = new_chat_members + self.chat_joined_by_request = chat_joined_by_request self.left_chat_member = left_chat_member self.new_chat_title = new_chat_title self.new_chat_photo = new_chat_photo @@ -528,6 +533,7 @@ class Message(Object, Update): action = message.action new_chat_members = None + chat_joined_by_request = None left_chat_member = None new_chat_title = None delete_chat_photo = None @@ -555,6 +561,9 @@ class Message(Object, Update): elif isinstance(action, raw.types.MessageActionChatJoinedByLink): new_chat_members = [types.User._parse(client, users[utils.get_raw_peer_id(message.from_id)])] service_type = enums.MessageServiceType.NEW_CHAT_MEMBERS + elif isinstance(action, raw.types.MessageActionChatJoinedByRequest): + chat_joined_by_request = types.ChatJoinedByRequest() + service_type = enums.MessageServiceType.CHAT_JOINED_BY_REQUEST elif isinstance(action, raw.types.MessageActionChatDeleteUser): left_chat_member = types.User._parse(client, users[action.user_id]) service_type = enums.MessageServiceType.LEFT_CHAT_MEMBERS @@ -622,6 +631,7 @@ class Message(Object, Update): sender_chat=sender_chat, service=service_type, new_chat_members=new_chat_members, + chat_joined_by_request=chat_joined_by_request, left_chat_member=left_chat_member, new_chat_title=new_chat_title, new_chat_photo=new_chat_photo, diff --git a/pyrogram/types/user_and_chats/__init__.py b/pyrogram/types/user_and_chats/__init__.py index e233984a..bc1e7f71 100644 --- a/pyrogram/types/user_and_chats/__init__.py +++ b/pyrogram/types/user_and_chats/__init__.py @@ -22,6 +22,7 @@ from .chat_event import ChatEvent from .chat_event_filter import ChatEventFilter from .chat_invite_link import ChatInviteLink from .chat_join_request import ChatJoinRequest +from .chat_joined_by_request import ChatJoinedByRequest from .chat_joiner import ChatJoiner from .chat_member import ChatMember from .chat_member_updated import ChatMemberUpdated @@ -74,6 +75,7 @@ __all__ = [ "ChatMemberUpdated", "VideoChatScheduled", "ChatJoinRequest", + "ChatJoinedByRequest", "ChatPrivileges", "ChatJoiner", "EmojiStatus", diff --git a/pyrogram/types/user_and_chats/chat_joined_by_request.py b/pyrogram/types/user_and_chats/chat_joined_by_request.py new file mode 100644 index 00000000..00540b9c --- /dev/null +++ b/pyrogram/types/user_and_chats/chat_joined_by_request.py @@ -0,0 +1,29 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# +# This file is part of Pyrogram. +# +# Pyrogram is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrogram is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +from ..object import Object + + +class ChatJoinedByRequest(Object): + """A service message about a user join request approved in the chat. + + Currently holds no information. + """ + + def __init__(self): + super().__init__()