如何使用discord.js进行简单的全局冷却

时间:2020-08-12 14:29:02

标签: javascript discord.js

所以我有一个新的Discord机器人,对编程很新,就像我有点理解,但我不能自己做。但是到了这个问题。该bot全部位于.js中(我确实拥有config.json),但我尚未使事件处理程序正常工作。但是我的代码是。

client.on("message", (message) => {
    if (message.author.bot) return;
 
    if (message.content.includes ("John")) {
      message.channel.send ("Oh yeah, that guy...");
    }
}

如何获得全球冷却时间?我希望进行冷却,以便如果发生有关John的麻烦,则该漫游器不会响应每条消息。

2 个答案:

答案 0 :(得分:1)

最简单的方法是在侦听器外部创建一个带有时间戳的变量,然后将当前时间戳与范围之外的时间戳进行比较,就像这样

var lastReply = 0;
client.on("message", (message) => {
    if (Date.now() - lastReply < 10000) return; // don't respond within 10 seconds
    lastReply = Date.now();
    if (message.author.bot) return;
 
    if (message.content.includes ("John")) {
      message.channel.send ("Oh yeah, that guy...");
    }
}

我将其设置为10秒,但是您当然可以从配置中获取它,也可以自行更改。为了清楚起见(易于阅读),您还可以设置一个这样的值(例如5分钟):lastReply < 5 * 60 * 1000

答案 1 :(得分:0)

var cooldown = false;
client.on("message", (message) => {
      if (message.author.bot) return;

      if (message.content.includes("John")) {
        if (cooldown == true) {

          //Bot is on a cooldown
          return;

        } else {
          message.channel.send("Oh yeah, that guy...");

          cooldown = true;
          setTimeout(() => {
            cooldown = false
          }, 60000); //Timeout for a minute
        }
      }
    }

Kinda不熟悉自己编程的新习惯,但这与我使用的类似。