首页 > 解决方案 > 使用 telethon.sync 时如何处理“洪水等待”错误?

问题描述

看起来客户端的同步版本不会引发任何错误?使用 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)

标签: telethon

解决方案


telethon.sync不会改变异常的行为。但是,FloodWaitError不是 a ValueError,所以你except不会抓住它。以下将起作用:

from telethon import errors

try:
    ...
except errors.FloodWaitError as e:
    print('Flood wait for ', e.seconds)

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


推荐阅读