冷却命令以检查每个冷却时间(Discord.js)

时间:2020-11-03 15:54:19

标签: node.js discord discord.js

好的,比方说,我想创建一个命令,该命令接受每次冷却并显示在嵌入中。我得到了嵌入部分,但是,每当我尝试“获得”冷却时间时,它都无济于事。我把每个地图都放在不同的js文件上,这是问题所在,但是,有什么我可以做的,所以我不必重写主文件上的所有内容吗?

以下是每个带有冷却时间的命令的代码示例:

const cooldownsdaily= new Map();
const duration = require ('humanize-duration');

这是用于设置

cooldownsdaily.set(message.author.id, Date.now() + 86400000);
setTimeout(() => cooldownsdaily.delete(message.author.id), 86400000);

最后一个是我当前用来检查它是否已执行的一个命令,无论是在冷却命令还是在日常命令中

const cooldowndaily = cooldownsdaily.get(message.author.id);
if (cooldowndaily) {
        var remainingdaily = duration(cooldowndaily - Date.now(), { units: [`h`,`m`,`s`], language: "es" , round: true})
} if (!cooldowndaily) {
        var remainingdaily = ':white_check_mark:'
}

注意:如果有人可以帮助我,请解释一下(如果有)解决方案以便我可以学习,我将非常高兴。我不只想要代码:<,如果代码看起来很糟糕,我也很抱歉,我有点乞gg

1 个答案:

答案 0 :(得分:0)

如果要对一个特定命令设置冷却时间,请添加let cooldown = new Set(); 和: let cdseconds = 30;到命令的顶部,然后在该命令的下面添加以下内容:

let cooldownReply = new Discord.MessageEmbed()
    .setColor("RANDOM")
    .setTitle(message.author.tag + " Slow it down bruh..")
    .setDescription(
      "You're on cooldown! Please wait before using this command again!"
    );
  if (cooldown.has(message.author.id)) {
    message.delete();
    return message.channel.send(cooldownReply);
  }
  cooldown.add(message.author.id);
  setTimeout(() => {
    cooldown.delete(message.author.id);
  }, cdseconds * 1000);

这将使一个命令的冷却时间降低30秒。如果要对所有命令进行冷却,只需不确定以下内容,只需在顶部的第4-7行添加let cooldown = new Set(); let cdseconds = 30;vip_lists = [ ["1.0.1.1", "1.0.1.2", "1.0.1.3", "1.0.1.4"] ["1.0.2.1", "1.0.2.2", "1.0.2.3", "1.0.2.4"] ["1.0.0.1", "1.0.0.2", "1.0.0.3", "1.0.0.4"] ] 。还要确保也将我上面发送的嵌入内容添加到所有命令中。抱歉,这听起来令人困惑,请告诉我!