diff --git a/telethon/network/mtproto_sender.py b/telethon/network/mtproto_sender.py index 516a381c..e911af1f 100644 --- a/telethon/network/mtproto_sender.py +++ b/telethon/network/mtproto_sender.py @@ -35,6 +35,9 @@ class MtProtoSender: """Connects to the server""" self._transport.connect() + def is_connected(self): + return self._transport.is_connected() + def disconnect(self): """Disconnects from the server""" self._transport.close() diff --git a/telethon/network/tcp_transport.py b/telethon/network/tcp_transport.py index 9b35455b..c5f7a9df 100644 --- a/telethon/network/tcp_transport.py +++ b/telethon/network/tcp_transport.py @@ -18,6 +18,9 @@ class TcpTransport: self.send_counter = 0 self.tcp_client.connect(self.ip, self.port) + def is_connected(self): + return self.tcp_client.connected + # Original reference: https://core.telegram.org/mtproto#tcp-transport # The packets are encoded as: total length, sequence number, packet and checksum (CRC32) def send(self, packet): diff --git a/telethon/telegram_bare_client.py b/telethon/telegram_bare_client.py index 9e28075e..d4338169 100644 --- a/telethon/telegram_bare_client.py +++ b/telethon/telegram_bare_client.py @@ -79,6 +79,12 @@ class TelegramBareClient: If 'exported_auth' is not None, it will be used instead to determine the authorization key for the current session. """ + if self.sender and self.sender.is_connected(): + self._logger.warning( + 'Attempted to connect when the client was already connected.' + ) + return + transport = TcpTransport(self.session.server_address, self.session.port, proxy=self.proxy)