Javascript 如何在两条bot消息/命令之间设置计时器

Javascript 如何在两条bot消息/命令之间设置计时器,javascript,discord,discord.js,Javascript,Discord,Discord.js,我做了一个不和谐机器人,代码在这里 const Discord=require(“Discord.js”); const client=new Discord.client(); client.on(“ready”,()=>{ log(“我准备好了!”); }); client.on(“message”,(message)=>{ if(message.content.startsWith(“!kevin”)){ message.channel.send(“我是凯文”); } if(message

我做了一个不和谐机器人,代码在这里

const Discord=require(“Discord.js”);
const client=new Discord.client();
client.on(“ready”,()=>{
log(“我准备好了!”);
});
client.on(“message”,(message)=>{
if(message.content.startsWith(“!kevin”)){
message.channel.send(“我是凯文”);
}
if(message.content.startsWith(“!thomas”)){
message.channel.send(“随机文本blabla”);
}
基本上,当我输入!某物时,我的机器人会在聊天中通过适当的线路回答,我当前的问题是我的不和谐现在有点大,我想限制机器人每分钟只发送X条消息,但我找不到一个简单的功能来做到这一点

我的问题:

有没有可能在机器人发送的两条消息之间设置一个计时器,因为如果没有计时器,我的机器人只会向每个用户发送垃圾邮件,然后键入
!somethingsomething
,我希望我的机器人能够在有人键入
!something
,机器人会将自己锁定在X个时间内回复任何其他
!something

例如

用户1:!托马斯

用户2:!托马斯

用户3:!托马斯

但是机器人只回复其中一个,并在能够发送新的
!消息之前为自己设置计时器

那么,基本上,是让机器人每分钟回复X个!cmd,还是限制机器人发送两条消息之间的冷却时间

这里是我的脚本:(我知道它很糟糕,特别是因为它有9000多个不同的!cmd,但我很快转换了一个旧的MIRC脚本,我对javascript很糟糕)

命令的冷却时间 只需存储命令运行的日期,然后检查自设置日期以来是否已过了一定数量。
示例: 编辑以支持多个命令

let date=false;
让commandsTimers={
“!凯文”:{
waitTime:5*60000,//5分钟等待此特定命令。
上次使用:错误,
}
}
让defaultWaitTime=60000*2;//除非指定,否则用户需要为每个命令等待2分钟
client.on(“message”,(message)=>{
让msgSentDate=Date.now();
让commandWaitTimer=commandsTimers[message.content.split(“”[0]]]|{waitTime:defaultWaitTime,lastUsed:false};
if((commandWaitTimer.lastUsed!==false?msgSentDate-commandWaitTimer.lastUsed
用户和/或机器人的冷却时间 因此,我从您的评论中发现,您希望bot只在每“X”个时间段运行一个命令。我不建议这样做,我建议只阻止用户每“X”个时间段注册一个cmd。我在本示例中包括了这两个方面

让lastCmdSentTime={};
让waitTimeForUser=60000*5;//用户只能每5分钟运行一次命令
设botlastssent=false;
让timebetweechcmd=60000;//Bot每分钟只响应一次。
client.on(“message”,(message)=>{
if(botLastSent!==false?message.createdTimestamp-botLastSent
嘿,谢谢你的留言,我喜欢你这样做,但问题是我收到了9000多个命令,所以我想要/需要同样的命令,但一般来说,像一个全局数组/函数基本上,你是在做
if(message.content.startsWith(command))这样的每个命令吗
?还是将每个cmd存储在一个模块中?运行的命令是否可以访问正在运行的命令?例如,如果将每个命令存储在一个对象中,则可以将命令的名称作为
。运行该命令。我想编辑我的消息,但5 mnt要编辑我的帖子,我是beginer,我基本上转换了一个旧的mIRC script、 所以我有9000+的if(message.content.startsWith(“!thomas”){message.channel.send(“随机文本blabla”);}我需要一种方法来避免20个打字用户!cmd,然后我的机器人发送20行回复,你知道一种方法可以只做一个全局计时器,就像机器人只能回复一样!每X秒或分钟一次,基本上是这样的:复制粘贴代码不是编写代码的方式。这就是我们在f中编写代码的原因首先,我们不需要复制粘贴块,而是通过编程来定义行为。谢谢你的回答@RokoC.Buljan,我从来没有说过这是高质量的代码,这是一个旧Mirc脚本的转换,特别是因为我对javascript一窍不通,如果你知道一个合适的方法或指南,或者解释来帮助我以这种方式进步或改进爱它我会非常高兴,如果你的信息只是为了指出事实,而不是我的“脚本”太蠢了,别担心,我已经知道了,我只是想学习/尝试让它不那么蠢:)iv尝试使用你的脚本,但我认为discord.js不喜欢“让”或者导致某种错误,iv尝试复制您的代码在我的代码上进行尝试,基本代码是:const Discord=require(“Discord.js”);const client=new Discord.client();client.on(“ready”),()=>{console.log(“我准备好了!”;});client.on(“message”,(message)=>{if(message.content.startsWith(“!kevin”){message channel.send(