diff --git a/pyrogram/methods/phone/__init__.py b/pyrogram/methods/phone/__init__.py
index 3787ed06dd..a71c2ffee5 100644
--- a/pyrogram/methods/phone/__init__.py
+++ b/pyrogram/methods/phone/__init__.py
@@ -18,9 +18,11 @@
# along with Pyrogram. If not, see .
from .load_group_call_participants import LoadGroupCallParticipants
+from .invite_member_to_group_call import InviteMemberToGroupCall
class Phone(
- LoadGroupCallParticipants
+ LoadGroupCallParticipants,
+ InviteMemberToGroupCall
):
pass
diff --git a/pyrogram/methods/phone/invite_member_to_group_call.py b/pyrogram/methods/phone/invite_member_to_group_call.py
new file mode 100644
index 0000000000..50d78862ea
--- /dev/null
+++ b/pyrogram/methods/phone/invite_member_to_group_call.py
@@ -0,0 +1,86 @@
+# 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 typing import Union, List
+
+import pyrogram
+from pyrogram import types, raw
+
+
+class InviteMemberToGroupCall:
+ async def invite_member_to_group_call(
+ self: "pyrogram.Client",
+ chat_id: Union[int, str],
+ user_ids: Union[Union[int, str], List[Union[int, str]]],
+ ) -> "types.Message":
+ """Invite member to group call in a chat.
+
+ .. include:: /_includes/usable-by/users.rst
+
+ Parameters:
+ chat_id (``int`` | ``str``):
+ Unique identifier (int) or username (str) of the target chat. A chat can be either a basic group or a supergroup.
+
+ user_ids (``int`` | ``str`` | List of ``int`` or ``str``):
+ Users to invite to group call in the chat
+ You can pass an ID (int) or username (str).
+ Multiple users can be added by passing a list of IDs or usernames
+
+ Returns:
+ :obj:`~pyrogram.types.Message`: On success, the sent service message is returned.
+
+ Example:
+ .. code-block:: python
+
+ await app.invite_member_to_group_call(chat_id, user_id)
+
+ """
+ peer = await self.resolve_peer(chat_id)
+
+ if isinstance(peer, raw.types.InputPeerChannel):
+ r = await self.invoke(raw.functions.channels.GetFullChannel(channel=peer))
+ elif isinstance(peer, raw.types.InputPeerChat):
+ r = await self.invoke(
+ raw.functions.messages.GetFullChat(chat_id=peer.chat_id)
+ )
+ else:
+ raise ValueError("Target chat should be group, supergroup or channel.")
+
+ call = r.full_chat.call
+
+ if call is None:
+ raise pyrogram.errors.CallPeerInvalid("No active group call at this chat.")
+
+ user_ids = [user_ids] if not isinstance(user_ids, list) else user_ids
+
+ r = await self.invoke(
+ raw.functions.phone.InviteToGroupCall(
+ call=call, users=[await self.resolve_peer(i) for i in user_ids]
+ )
+ )
+
+ for i in r.updates:
+ if isinstance(
+ i, (raw.types.UpdateNewChannelMessage, raw.types.UpdateNewMessage)
+ ):
+ return await types.Message._parse(
+ self,
+ i.message,
+ {i.id: i for i in r.users},
+ {i.id: i for i in r.chats},
+ )