From 16a5ab30703cd1f8ad4f3ce0c7af54db28b105be Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Thu, 7 Sep 2017 21:23:37 +0200 Subject: [PATCH] Add back the periodic PingRequest --- telethon/telegram_client.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index f0add2d4..3ac6e65f 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -13,6 +13,7 @@ from .errors import ( ) from .network import ConnectionMode from .tl import Session, TLObject +from .tl.functions import PingRequest from .tl.functions.account import ( GetPasswordRequest ) @@ -136,6 +137,10 @@ class TelegramClient(TelegramBareClient): # Constantly read for results and updates from within the main client self._recv_thread = None + # Default PingRequest delay + self._last_ping = datetime.now() + self._ping_delay = timedelta(minutes=1) + # endregion # region Connecting @@ -950,6 +955,12 @@ class TelegramClient(TelegramBareClient): def _recv_thread_impl(self): while self._sender and self._sender.is_connected(): try: + if datetime.now() > self._last_ping + self._ping_delay: + self._sender.send(PingRequest( + int.from_bytes(os.urandom(8), 'big', signed=True) + )) + self._last_ping = datetime.now() + self._sender.receive(update_state=self.updates) except TimeoutError: # No problem.