From 63b1881c8341dbc67e33cdbe5b827780ab572f13 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Mon, 29 May 2017 16:46:17 +0200 Subject: [PATCH] Raise FloodWaitError instead sleeping --- telethon/errors.py | 10 ++++++++++ telethon/network/mtproto_sender.py | 7 ++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/telethon/errors.py b/telethon/errors.py index d48bfe08..fbc7145e 100644 --- a/telethon/errors.py +++ b/telethon/errors.py @@ -44,6 +44,16 @@ class InvalidChecksumError(Exception): self.valid_checksum = valid_checksum +class FloodWaitError(Exception): + def __init__(self, seconds): + super().__init__( + self, + 'Too many requests were made too fast. Must wait {} seconds.' + .format(seconds) + ) + self.seconds = seconds + + class RPCError(Exception): CodeMessages = { diff --git a/telethon/network/mtproto_sender.py b/telethon/network/mtproto_sender.py index 67fab922..58c8ec65 100644 --- a/telethon/network/mtproto_sender.py +++ b/telethon/network/mtproto_sender.py @@ -5,7 +5,7 @@ from time import sleep, time from .. import helpers as utils from ..crypto import AES -from ..errors import (BadMessageError, RPCError, +from ..errors import (BadMessageError, FloodWaitError, RPCError, InvalidDCError, ReadCancelledError) from ..tl.all_tlobjects import tlobjects from ..tl.functions import PingRequest @@ -367,10 +367,7 @@ class MtProtoSender: if error.message.startswith('FLOOD_WAIT_'): self.updates_thread_sleep = error.additional_data - - print('Should wait {}s. Sleeping until then.'.format( - error.additional_data)) - sleep(error.additional_data) + raise FloodWaitError(seconds=error.additional_data) elif '_MIGRATE_' in error.message: raise InvalidDCError(error)