diff --git a/telethon/client/auth.py b/telethon/client/auth.py index f10a3f65..170b626a 100644 --- a/telethon/client/auth.py +++ b/telethon/client/auth.py @@ -620,6 +620,7 @@ class AuthMethods: await self.disconnect() self.session.delete() + self.session = None return True async def edit_2fa( diff --git a/telethon/client/telegrambaseclient.py b/telethon/client/telegrambaseclient.py index 28e4485b..23708151 100644 --- a/telethon/client/telegrambaseclient.py +++ b/telethon/client/telegrambaseclient.py @@ -523,6 +523,9 @@ class TelegramBaseClient(abc.ABC): except OSError: print('Failed to connect') """ + if self.session is None: + raise ValueError('TelegramClient instance cannot be reused after logging out') + if not await self._sender.connect(self._connection( self.session.server_address, self.session.port, @@ -603,6 +606,9 @@ class TelegramBaseClient(abc.ABC): # You don't need to use this if you used "with client" await client.disconnect() """ + if self.session is None: + return # already logged out and disconnected + if self.loop.is_running(): # Disconnect may be called from an event handler, which would # cancel itself during itself and never actually complete the