2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-29 05:18:10 +00:00

Add ability to export current links without revoking the old ones

This commit is contained in:
Dan 2018-01-08 06:31:48 +01:00
parent e832517e83
commit 44d1679108

View File

@ -36,7 +36,8 @@ from pyrogram.api.errors import (
PhoneMigrate, NetworkMigrate, PhoneNumberInvalid, PhoneMigrate, NetworkMigrate, PhoneNumberInvalid,
PhoneNumberUnoccupied, PhoneCodeInvalid, PhoneCodeHashEmpty, PhoneNumberUnoccupied, PhoneCodeInvalid, PhoneCodeHashEmpty,
PhoneCodeExpired, PhoneCodeEmpty, SessionPasswordNeeded, PhoneCodeExpired, PhoneCodeEmpty, SessionPasswordNeeded,
PasswordHashInvalid, FloodWait, PeerIdInvalid, FilePartMissing PasswordHashInvalid, FloodWait, PeerIdInvalid, FilePartMissing,
ChatAdminRequired
) )
from pyrogram.api.types import ( from pyrogram.api.types import (
User, Chat, Channel, User, Chat, Channel,
@ -1545,7 +1546,7 @@ class Client:
return r return r
def export_chat_invite_link(self, chat_id: int or str): def export_chat_invite_link(self, chat_id: int or str, new: bool = False):
"""Use this method to export an invite link to a supergroup or a channel. """Use this method to export an invite link to a supergroup or a channel.
The user must be an administrator in the chat for this to work and must have the appropriate admin rights. The user must be an administrator in the chat for this to work and must have the appropriate admin rights.
@ -1555,23 +1556,54 @@ class Client:
Unique identifier for the target chat or username of the target channel/supergroup Unique identifier for the target chat or username of the target channel/supergroup
(in the format @username). (in the format @username).
new (:obj:`bool`):
The previous link will be deactivated and a new link will be generated.
This is also used to create the invite link in case it doesn't exist yet.
Returns: Returns:
On success, the exported invite link as string is returned. On success, the exported invite link as string is returned.
Raises: Raises:
:class:`pyrogram.Error` :class:`pyrogram.Error`
Note:
If the returned link is a new one it may take a while for it to be activated.
""" """
peer = self.resolve_peer(chat_id) peer = self.resolve_peer(chat_id)
if isinstance(peer, types.InputPeerChat): if isinstance(peer, types.InputPeerChat):
return self.send( if new:
functions.messages.ExportChatInvite( return self.send(
chat_id=peer.chat_id functions.messages.ExportChatInvite(
) chat_id=peer.chat_id
).link )
).link
else:
chat_full = self.send(
functions.messages.GetFullChat(
chat_id=peer.chat_id
)
).full_chat # type: types.ChatFull
if isinstance(chat_full.exported_invite, types.ChatInviteExported):
return chat_full.exported_invite.link
else:
raise ChatAdminRequired
elif isinstance(peer, types.InputPeerChannel): elif isinstance(peer, types.InputPeerChannel):
return self.send( if new:
functions.channels.ExportInvite( return self.send(
channel=peer functions.channels.ExportInvite(
) channel=peer
).link )
).link
else:
channel_full = self.send(
functions.channels.GetFullChannel(
channel=peer
)
).full_chat # type: types.ChannelFull
if isinstance(channel_full.exported_invite, types.ChatInviteExported):
return channel_full.exported_invite.link
else:
raise ChatAdminRequired