im trying to create a cooldown for my status command, because they spam a lot on the server the status command and i want a cooldown like 5m and that send a message like, "you need to wait 5m more to use this command im really newbie to javascript, so if anyone can help me
Here its my entire command:
const Discord = require("discord.js");
const yaml = require("js-yaml");
const supportbot = yaml.load(
fs.readFileSync("./Configs/supportbot.yml", "utf8")
);
const cmdconfig = yaml.load(fs.readFileSync("./Configs/commands.yml", "utf8"));
const Command = require("../Structures/Command.js");
const { timeStamp } = require("console");
var request = require('request');
const Gamedig = require('gamedig');
let state = null;
setInterval(() => {
Gamedig.query({
type: 'minecraft',
host: 'mc.latinplay.net',
port: '25565'
})
.then((updatedState) => {
state = updatedState;
players = state.players.length;
}).catch((error) => {
console.log("Server is offline");
});
}, 6000);
module.exports = new Command({
name: cmdconfig.EstadoCommand,
description: cmdconfig.EstadoCommandDesc,
async run(interaction) {
const LatinEstado = new Discord.MessageEmbed()
.setColor('RANDOM')
.setTitle('ππππ’π§ππ₯ππ² ππππ°π¨π«π€ **Estado del Servidor**')
.setURL("https://store.latinplay.net/")
.addField('**Jugadores en linea:**', `${players || "0"}`)
.addField('**Estado Actual:**', "**En Lineaπ**", true)
.setThumbnail('https://media0.giphy.com/media/5RQ6coK6GVXGfPPq69/giphy.gif?cid=790b76115867f0dba05d9cf2aceb80efed5b0e494387e3b2&rid=giphy.gif&ct=g')
.setFooter({ text: 'LatinBot | Version 1.0 ', iconURL: 'https://cdn.discordapp.com/attachments/953043417234026547/988805760458821642/Diseno_sin_titulo.png' });
interaction.reply({
embeds: [LatinEstado],
});
}
},
);```
Just store last command run time in a map.
const cooldown={}; // Add this
...
module.exports = new Command({
name: cmdconfig.EstadoCommand,
description: cmdconfig.EstadoCommandDesc,
async run(interaction) {
//
if (interaction.user.id in cooldown && cooldown[interaction.user.id] - Date.now() > 0) // in cool down
return interaction.reply("In cooldown! Please wait 5 min!");
cooldown[interaction.user.id] = Date.now() + 300000; // 5 min in ms.
//
const LatinEstado = new Discord.MessageEmbed()
.setColor('RANDOM')
.setTitle('ππππ’π§ππ₯ππ² ππππ°π¨π«π€ **Estado del Servidor**')
.setURL("https://store.latinplay.net/")
.addField('**Jugadores en linea:**', `${players || "0"}`)
.addField('**Estado Actual:**', "**En Lineaπ**", true)
.setThumbnail('https://media0.giphy.com/media/5RQ6coK6GVXGfPPq69/giphy.gif?cid=790b76115867f0dba05d9cf2aceb80efed5b0e494387e3b2&rid=giphy.gif&ct=g')
.setFooter({
text: 'LatinBot | Version 1.0 ',
iconURL: 'https://cdn.discordapp.com/attachments/953043417234026547/988805760458821642/Diseno_sin_titulo.png'
});
interaction.reply({
embeds: [LatinEstado],
});
}
});