Telegram API 抛出 PeerFloodError: Too many requests 错误

6

我没有使用机器人API。我正在使用Telegram API发送消息。消息很容易发送,但是问题出现在第19个用户之后。在第20个用户处,我收到PeerFloodError错误。即使经过了大量搜索,我也没有找到任何特定的限制,并且使用sleep也无法实现。请建议一种克服此问题的方法。

代码

def send_message(root2, client):
    totalcount = 0
    for user in users:
        if totalcount >= len(users):
            root2.destroy()
            break

        if totalcount % 15 == 0 and totalcount != 0:
            print("Waiting for one minute...")
            time.sleep(60)

        if user not in users2 or user not in users3:
            totalcount += 1
            entity = client.get_entity(user)

            client.send_message(entity, message_str)
            time.sleep(8)
1个回答

10

大多数Telegram API都有严格的限制,分别为30秒、30分钟和24小时。在30分钟内分散19次(或更少)API调用,并检查它是否会抛出错误。如果在30分钟后一切正常:太好了!否则,请继续此过程24小时。

请注意,如果需要批量使用Telegram API,则可能需要在您的项目中使用多个帐户。


4
非常感谢,这解决了我的问题。我只是将睡眠时间从8增加到了120(两分钟),将19个请求分散到了38分钟中,效果非常好。 - Jaskaran Singh
1
此时,850s 对我来说刚好有效。 850s --> 14.16 分钟(15m)。每次出现错误时,我都会使用以下方式处理: except PeerFloodError: COOLDOWN += 60 然后time.sleep(COOLDOWN)。这发生在我等待了整个持续时间 telethon.errors.rpcerrorlist.FloodWaitError: A wait of 2322 seconds 之后,此错误是在使用 InviteToChannelRequest() 后引发的。希望对您有所帮助... - Jawad
更新:850秒只够一次尝试...增加60秒的时间似乎为我解决了问题。你可能需要查看问题:398 - Jawad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接