在 python 中避免 FloodWait

Avoid FloodWait in python

我是 Pyrogram 的新手,我尝试制作订阅机器人

我想在任何消息满足我的过滤器时立即发送消息,但每次我连续发送超过 3 条消息时,我都会收到 FloodWait 错误。捕获那个异常没有问题,但是总是越来越大

15 -> 60 -> 333 -> 417 秒

如何避免?每条消息后睡几秒钟无济于事。而且我没有在文档中找到任何关于确切估计等待时间的信息

            for user in subs_arr:
                try:
                    app.send_message(user, msg)
                    time.sleep(10)
                except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
                    wait_err = str(wait_err)
                    time.sleep(wait_err.x)

经过一些研究,我发现无法避免 FloodWait :D

但我对time.sleep的理解完全错误。我为那个机器人使用了 Pyrogram,我不需要那个机器人的异步组件 然而,bot 需要异步睡眠,我在以这种方式重新设计它时遇到了问题。最后我想出了那个解决方案(现在睡眠通常是 <=60 秒)

try:
     await app.send_message(user, msg)
     await asyncio.sleep(3)
except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
     await asyncio.sleep(wait_err.x)
except TimeoutError:
     continue
except pyrogram.errors.exceptions.bad_request_400.UsernameNotOccupied:
                    continue

希望它能帮助某些人,甚至有人会建议我更好的方法