如何避免使用discord.js api超过rate-limit?
How to avoid to exceed rate-limit by using discord.js api?
我想了解 discord API 是如何工作的。尤其是限速政策。通过阅读 docs . I need to implement a logic that track the rate of invalid request that it sent as a response header when I do my requests. However, when I do it (the request) using postman, the response headers don't include the rate-limit info as showed in this part of the docs 。因此,我不知道如何处理这个问题。
所以我有两个问题:
- 如何在响应中得到 rate-limit headers?
- 如何在我的代码中实现逻辑以防止我的后端在达到限制时发送请求并在下一次尝试之前设置超时以避免我的 IP 被 discord 禁止?
我的 expressjs 代码示例:
const addnew = async (req, res) => {
try {
const { memberId, guildId, type, value, embed } = req.body;
res
.status(400)
.send({ error: "error" });
return;
await client.addnew(memberId, guildId, type, value, embed);
res.status(200).send(req.body);
} catch (err) {
console.log(err);
res.status(500).send(err);
}
};
Discord.js 具有为您处理速率限制问题的逻辑。如果您监视 Client#rateLimit
事件,您会发现如果您在代码中发出过多的 API 请求,该事件就会触发。这意味着您的请求已排队,一旦超过您的速率限制持续时间,Discord.js 将发送它们。
我想了解 discord API 是如何工作的。尤其是限速政策。通过阅读 docs . I need to implement a logic that track the rate of invalid request that it sent as a response header when I do my requests. However, when I do it (the request) using postman, the response headers don't include the rate-limit info as showed in this part of the docs 。因此,我不知道如何处理这个问题。
所以我有两个问题:
- 如何在响应中得到 rate-limit headers?
- 如何在我的代码中实现逻辑以防止我的后端在达到限制时发送请求并在下一次尝试之前设置超时以避免我的 IP 被 discord 禁止?
我的 expressjs 代码示例:
const addnew = async (req, res) => {
try {
const { memberId, guildId, type, value, embed } = req.body;
res
.status(400)
.send({ error: "error" });
return;
await client.addnew(memberId, guildId, type, value, embed);
res.status(200).send(req.body);
} catch (err) {
console.log(err);
res.status(500).send(err);
}
};
Discord.js 具有为您处理速率限制问题的逻辑。如果您监视 Client#rateLimit
事件,您会发现如果您在代码中发出过多的 API 请求,该事件就会触发。这意味着您的请求已排队,一旦超过您的速率限制持续时间,Discord.js 将发送它们。