Discord API Rate Limiting



我目前正在为我以前制作的一个Discord机器人创建一个web仪表板。

我使用express.js作为我的后端服务器,为了验证用户的凭据,几乎每个请求都是get或post请求,在前端服务给用户之前,对仪表板后端发起的Discord API有某种调用(因为我不知道如何安全地从前端发出API请求,因为需要用户令牌)

正如你从上一段可能猜到的那样,我暂时被禁止使用API(如下),这意味着我不能再使用我的Discord帐户,我的bot已经离线。

显示API错误(代码429)的图像

我知道API请求发送有关速率限制和剩余配额等的标头,我只是不知道该如何处理这些数据。为了解决这个速率限制问题,最好的编程实践是什么?

我最初尝试使用刷新令牌,因为我认为新的令牌会阻止用户重新身份验证。这些令牌存储在mongodb数据库中(以防止每次用户想要发出请求时我都发送令牌请求),但是这些措施并没有像我希望的那样有多大帮助。

你不应该这么快就遇到速率限制,为什么你要向API发出这么多请求?OAuth2流提供的访问令牌适用于多个请求(如果你不请求新的令牌,它会在整整一周内保持有效),所以确保你不是每次客户端加载你的应用程序时都请求一个新的令牌。

如果问题是每次用户重新加载应用程序时,你都使用访问令牌向Discord API请求用户信息,那么你需要改变它。只需在后台保存用户信息,并每隔一段时间(可能是一分钟或两分钟),"刷新";他们的数据自动通过发出一个请求。这样,如果有人用垃圾邮件重新加载你的应用,你的应用就不会每次都用垃圾邮件请求Discord API获取新信息。

如果你曾经被Discord限制,因为你的用户垃圾邮件重新加载了你的应用程序,这是你端的一个漏洞,你需要处理它。

另外,您提到使用请求头中提供的速率限制信息。这些信息可以很有用,这样你就知道在发出另一个请求之前需要等待多长时间,并阻止Discord的API对你的应用起作用。但它绝对不会帮助你真正阻止你的应用获得速率限制,这只能通过管理你如何更好地向Discord API发出请求来帮助。

最新更新