Quiero que mi bot responda el comando "!ayuda" que la gente escribirá en el chat, pero solo una vez cada 60 segundos
require('dotenv').config(); const tmi = require('tmi.js'); const client = new tmi.Client({ channels: [ 'test' ], identity: { username: process.env.TWITCH_BOT_USERNAME, password: process.env.TWITCH_OATH_TOKEN } }); client.connect(); client.on('message', (channel, tags, message, self) => { const send = message === "!help" if ( !send ) return; { client.say(channel, `This message shouldn't send more then once eveyr 60 seconds`) } console.log(`${tags['display-name']}: ${message}`); }); ```Puede usar new Date() para obtener la fecha y hora actual. Y new Date().getTime() le da una cantidad de milisegundos desde la época (desde 1970-01-01 00:00:00 UTC).
// get the current time const timeNow = new Date().getTime() Cada vez que envía una respuesta '!help' , guarda la hora actual.
// the time of the last help message let lastHelpTime = 0 // ... later when sending the message // update the last help message time lastHelpTime = timeNow En cada comando '!help' , compara timeNow con el valor guardado lastHelpTime para evitar enviarlo nuevamente en un minuto. Para permitir una nueva respuesta, la diferencia timeNow - lastHelpTime debe ser superior a 60 segundos, pero debido a que tenemos que comparar milisegundos, significa que la diferencia debe ser superior a 60 * 1000 milisegundos.
// check if at least 1 minute has elapsed since the last help message if (timeNow - lastHelpTime > 60 * 1000) //...Combinado todo junto en su código original
// the time of the last help message let lastHelpTime = 0 client.on('message', (channel, tags, message, self) => { const send = message === "!help" if ( !send ) return; // get the current time const timeNow = new Date().getTime() // check if at least 1 minute has elapsed since the last help message if (timeNow - lastHelpTime > 60 * 1000) { // update the last help message time lastHelpTime = timeNow // post the help message in chat client.say(channel, `This is the help message`) } console.log(`${tags['display-name']}: ${message}`); });