我使用 Discord.Net 3.8.1 制作了一个 Discord 机器人。有一项功能可以每天向公会中具有特定角色的所有用户发送 DM。机器人所在的不同公会的人数甚至可以达到 2000 人。甚至可能每个星期天向每个人发送一次消息。
虽然我正在开发,但我读到了速率限制。我想知道当我们调用 SendMessageAsync 时 Discord.Net 是否自动处理它(比如将它放在队列中并延迟执行请求)或者我是否需要添加任务。在每次 SendMessageAsync 之前延迟。 如果我确实需要增加延迟,多少? 例如,如果我需要向 2000 人发送 DM,我可以每秒调用一次 SendMessageAsync,总时间跨度为 2000 秒吗?
现在,对于每个行会,我得到所有的用户。循环遍历它们并立即调用 SendMessageAsync。
附言我对 API 和机器人开发是全新的,所以如果我在这里遗漏了其他东西,请告诉我。
我在开发过程中没有遇到任何速率限制错误。但是当我意识到速率限制时,我到处研究,包括 Discord.Net 的官方文档,但没有找到任何有用的东西。
你可以调用它,它不会继续,直到等待
AnyAwaitableAsync
。据我所知,它会自动处理速率限制,但执行时间可能比预期的要长,因此最好将交互运行模式设置为异步以避免阻塞网关线程。