如何通过使用discord.js api避免超出速率限制?

时间:2020-08-01 10:43:09

标签: node.js express http-headers discord.js rate-limiting

我试图了解不和谐API的工作方式。特别是限速政策。通过阅读docs。我需要实现一个逻辑,以跟踪我在处理请求时作为响应标头发送的无效请求的比率。但是,当我使用邮递员执行此操作(请求)时,响应标头不包含this part of the docs中所示的速率限制信息。因此,我不知道该如何处理。

所以我有两个问题:

  1. 如何在响应中获取速率限制标头?
  2. 如何在代码中实现逻辑,以防止后端达到上限并在下一次尝试之前设置超时,以防止后端发送请求?

我的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);
  }
};

1 个答案:

答案 0 :(得分:0)

Discord.js 具有为您处理速率限制问题的逻辑。如果您监控 Client#rateLimit 事件,您可以看到,如果您在代码中发出过多 API 请求,则会触发该事件。这意味着您的请求已经入队,一旦超过您的速率限制持续时间,Discord.js 就会发送它们。