如何使用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的麻烦,则该漫游器不会响应每条消息。

解决方法

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

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

,
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不熟悉自己编程的新习惯,但这与我使用的类似。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...