使用 telethon.sync 时如何处理“洪水等待”错误?

Rot*_*kiv 5 telethon

看起来同步版本的客户端不会抛出任何错误?使用 telethon.sync 时处理错误的正确方法是什么?

下面的代码导致客户端进入“睡眠”状态,但不会出现任何错误。

我尝试对 的显式异常执行相同操作FloodWaitError,但它不能解决问题。

from telethon.sync import TelegramClient
from telethon.tl.functions.channels import GetFullChannelRequest


if __name__ == '__main__':
    setup_logging(level=logging.INFO)

tg = TelegramClient(
    'anon',
    api_id=config.API_ID,
    api_hash=config.API_HASH,
)

with tg as client:
    try:
        result = client(GetFullChannelRequest(-1001100118939))
    except ValueError as e:
        print(e)
        break;
        # print('Flood wait for ', e.seconds)
        # time.sleep(e.seconds)
    print(result)
Run Code Online (Sandbox Code Playgroud)

Lon*_*ami 9

telethon.sync不会改变异常的行为。然而,FloodWaitError它不是一个ValueError,所以你except不会明白它。以下将起作用:

from telethon import errors

try:
    ...
except errors.FloodWaitError as e:
    print('Flood wait for ', e.seconds)
Run Code Online (Sandbox Code Playgroud)

请注意,如果默认情况下洪水错误少于一分钟,库会自动休眠,在这种情况下,为了方便起见,它将等待并且不会引发。