Javascript Discord.js-每个用户而不是所有用户的命令冷却时间

Javascript Discord.js-每个用户而不是所有用户的命令冷却时间,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我正在开发一个discord.js机器人,我想为一个命令做一个冷却 我在Google上看到了很多关于如何执行的教程,但所有这些教程都是针对所有命令执行的(因此,当用户键入!mycmd时,所有用户都必须等待X分钟/秒,直到再次键入为止) 但是我想为每个用户都这样做(当用户键入!mycmd时,只有该用户需要等待X分钟/秒,直到用户可以再次键入它) 可能吗 谢谢 是的,这很容易,也很可能 在JS文件的顶部添加以下内容: // First, this must be at the top level o

我正在开发一个discord.js机器人,我想为一个命令做一个冷却

我在Google上看到了很多关于如何执行的教程,但所有这些教程都是针对所有命令执行的(因此,当用户键入!mycmd时,所有用户都必须等待X分钟/秒,直到再次键入为止)

但是我想为每个用户都这样做(当用户键入!mycmd时,只有该用户需要等待X分钟/秒,直到用户可以再次键入它)

可能吗


谢谢

是的,这很容易,也很可能

在JS文件的顶部添加以下内容:

// First, this must be at the top level of your code, **NOT** in any event!
const talkedRecently = new Set();
现在在命令事件中添加以下内容:

    if (talkedRecently.has(msg.author.id)) {
            msg.channel.send("Wait 1 minute before getting typing this again. - " + msg.author);
    } else {

           // the user can type the command ... your command code goes here :)

        // Adds the user to the set so that they can't talk for a minute
        talkedRecently.add(msg.author.id);
        setTimeout(() => {
          // Removes the user from the set after a minute
          talkedRecently.delete(msg.author.id);
        }, 60000);
    }
如果您想跟踪冷却,甚至在重新启动后,也可以使用该软件包

让冷却时间=43200000;//12小时毫秒
让lastDaily=wait db.fetch(`daily_${message.author.id}`);
if(lastDaily!==null&&cooldown-(Date.now()-lastDaily)>0){
//如果用户仍有冷却时间
让timeObj=ms(冷却时间-(Date.now()-lastDaily));//timeObj.hours=12
}否则{
//否则,他们将得到他们的日常生活
}

您可以使用wokcommands或discord.js-commando,它们是一个非常有用的软件包,可以方便地处理命令和事件。它有一个内置的冷却,你可以使用。每个用户的冷却时间和全局冷却时间。此外,突击队还有节流功能,比如限速。这就像允许用户使用该命令4次或您输入的任何内容,然后执行冷却

如果您想在bot重新启动时跟踪您的冷却时间,Wokcommands支持mongodb,并且有一个用于冷却的内置集合


我也在忙着冷却。这很有帮助,但我有一个问题。我有一个命令处理程序,我必须把它放在我的索引中还是命令本身中?或者其他地方,比如消息事件?如果你想把那些违反冷却时间3次的人放在一个单独的列表中,你会如何调整这个解决方案?