diff --git a/telethon/telegram_bare_client.py b/telethon/telegram_bare_client.py index 47d1e2ae..b98ef976 100644 --- a/telethon/telegram_bare_client.py +++ b/telethon/telegram_bare_client.py @@ -534,10 +534,16 @@ class TelegramBareClient: '[ERROR] Telegram is having some internal issues', e ) - except FloodWaitError: - sender.disconnect() - self.disconnect() - raise + except FloodWaitError as e: + if e.seconds > self.session.flood_sleep_threshold | 0: + sender.disconnect() + self.disconnect() + raise + + self._logger.debug( + 'Sleep of %d seconds below threshold, sleeping' % e.seconds + ) + sleep(e.seconds) # Some really basic functionality diff --git a/telethon/tl/session.py b/telethon/tl/session.py index 98ffda16..f597048f 100644 --- a/telethon/tl/session.py +++ b/telethon/tl/session.py @@ -37,6 +37,7 @@ class Session: self.lang_pack = session.lang_pack self.report_errors = session.report_errors self.save_entities = session.save_entities + self.flood_sleep_threshold = session.flood_sleep_threshold else: # str / None self.session_user_id = session_user_id @@ -50,6 +51,7 @@ class Session: self.lang_pack = '' self.report_errors = True self.save_entities = True + self.flood_sleep_threshold = 60 # Cross-thread safety self._seq_no_lock = Lock()