I want my bot to reply “Good morning” whenever someone says “good morning”, for example. I’ve got all that figured out, but now I wanted to put a timer onto it and it is getting a bit more complicated. I want the timer to be for absolutely everyone on the server. If anyone says good morning then let’s make the bot wait 3 seconds, for example. I’ve tried a couple different solutions but none work so I would see if I could get any help here.
let goodmorning = true; client.on("message", (message) => { if (!message.author.bot) { if (message.content == "good morning") { if (goodmorning == true) { message.channel.send("Good morning"); setInterval(() => goodmorning = false, 3000); } else { setTimeout(goodmorning = true, 3000); } } } });
I have also tried this other solution that I found online. I got “Syntax error: Unexpected Identifier” for this one on line 3 even though line 5 is very similar:
client.on("message", (message) => { if (!message.author.bot) { long lastTrueTime; boolean timedgm() { long now = System.currentTimeMillis(); if (message.content == "good morning") { lastTrueTime = now; return true; } if (lastTrueTime+3000<now) return false; return true; } message.channel.send("Good morning"); } });
Thank you for all the help in advance.
Advertisement
Answer
It seems like you are wanting a global cooldown for this command.
This can easily be done by setting the value to false immediately, then 3000ms later turn the value back to true
let goodmorning = true; client.on("message", (message) => { if (!message.author.bot) { if (message.content == "good morning") { if (goodmorning == true) { message.channel.send("Good morning"); goodmorning = false; setTimeout(() => goodmorning = true, 3000); } } } });