看起来同步版本的客户端不会抛出任何错误?使用 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)
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)
请注意,如果默认情况下洪水错误少于一分钟,库会自动休眠,在这种情况下,为了方便起见,它将等待并且不会引发。
| 归档时间: |
|
| 查看次数: |
8962 次 |
| 最近记录: |