首页 > 解决方案 > 如何使用 discord.js 进行简单的全局冷却

问题描述

所以我有一个新的不和谐机器人并且对编程很陌生,就像我有点理解它但不能自己做一样。但关于这个问题。该机器人都在 .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 的会议,机器人不会回复每条消息。

标签: javascriptdiscord.js

解决方案


最简单的事情是在侦听器之外创建一个带有时间戳的变量,并将当前时间戳与范围外的一组进行比较,如下所示

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


推荐阅读