diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index be726c44..84fc4f20 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -253,6 +253,8 @@ def pyrogram_api(): get_chat_admin_invite_links_count get_chat_admins_with_invite_links delete_chat_admin_invite_links + approve_chat_join_request + decline_chat_join_request """, contacts=""" Contacts diff --git a/pyrogram/methods/invite_links/__init__.py b/pyrogram/methods/invite_links/__init__.py index 198ce1bd..ccdad312 100644 --- a/pyrogram/methods/invite_links/__init__.py +++ b/pyrogram/methods/invite_links/__init__.py @@ -17,17 +17,19 @@ # along with Pyrogram. If not, see . +from .approve_chat_join_request import ApproveChatJoinRequest from .create_chat_invite_link import CreateChatInviteLink +from .decline_chat_join_request import DeclineChatJoinRequest from .delete_chat_admin_invite_links import DeleteChatAdminInviteLinks from .delete_chat_invite_link import DeleteChatInviteLink from .edit_chat_invite_link import EditChatInviteLink from .export_chat_invite_link import ExportChatInviteLink +from .get_chat_admin_invite_links import GetChatAdminInviteLinks +from .get_chat_admin_invite_links_count import GetChatAdminInviteLinksCount from .get_chat_admins_with_invite_links import GetChatAdminsWithInviteLinks from .get_chat_invite_link import GetChatInviteLink from .get_chat_invite_link_members import GetChatInviteLinkMembers from .get_chat_invite_link_members_count import GetChatInviteLinkMembersCount -from .get_chat_admin_invite_links import GetChatAdminInviteLinks -from .get_chat_admin_invite_links_count import GetChatAdminInviteLinksCount from .revoke_chat_invite_link import RevokeChatInviteLink @@ -43,6 +45,8 @@ class InviteLinks( DeleteChatAdminInviteLinks, GetChatAdminInviteLinksCount, GetChatAdminsWithInviteLinks, - GetChatInviteLink + GetChatInviteLink, + ApproveChatJoinRequest, + DeclineChatJoinRequest ): - pass \ No newline at end of file + pass diff --git a/pyrogram/methods/invite_links/approve_chat_join_request.py b/pyrogram/methods/invite_links/approve_chat_join_request.py new file mode 100644 index 00000000..013b64fe --- /dev/null +++ b/pyrogram/methods/invite_links/approve_chat_join_request.py @@ -0,0 +1,55 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2021 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 typing import Union + +from pyrogram import raw +from pyrogram.scaffold import Scaffold + + +class ApproveChatJoinRequest(Scaffold): + async def approve_chat_join_request( + self, + chat_id: Union[int, str], + user_id: int, + ) -> bool: + """Approve a chat join request. + + The bot must be an administrator in the chat for this to work and must have the *can_invite_users* administrator + right. + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier for the target chat or username of the target channel/supergroup + (in the format @username). + + user_id (``int``): + Unique identifier of the target user. + + Returns: + ``bool``: True on success. + """ + await self.send( + raw.functions.messages.HideChatJoinRequest( + peer=await self.resolve_peer(chat_id), + user_id=await self.resolve_peer(user_id), + approved=True + ) + ) + + return True diff --git a/pyrogram/methods/invite_links/decline_chat_join_request.py b/pyrogram/methods/invite_links/decline_chat_join_request.py new file mode 100644 index 00000000..5a0f942c --- /dev/null +++ b/pyrogram/methods/invite_links/decline_chat_join_request.py @@ -0,0 +1,55 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2021 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 typing import Union + +from pyrogram import raw +from pyrogram.scaffold import Scaffold + + +class DeclineChatJoinRequest(Scaffold): + async def decline_chat_join_request( + self, + chat_id: Union[int, str], + user_id: int, + ) -> bool: + """Decline a chat join request. + + The bot must be an administrator in the chat for this to work and must have the *can_invite_users* administrator + right. + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier for the target chat or username of the target channel/supergroup + (in the format @username). + + user_id (``int``): + Unique identifier of the target user. + + Returns: + ``bool``: True on success. + """ + await self.send( + raw.functions.messages.HideChatJoinRequest( + peer=await self.resolve_peer(chat_id), + user_id=await self.resolve_peer(user_id), + approved=False + ) + ) + + return True