Empecé en este pequeño proyecto solo por diversión para el servidor de mi amigo. Quería que el bot le respondiera cada vez que dijera algo en su servidor y quería que el bot dejara de responder una hora después de decir "cállate" (sin prefijos). actualmente tengo esto
client.on("message", function (message) { const amyID = "blahblah"; const jayID = "blahblah"; if (message.author.id == (jayID)) { if (message.content.includes("shut up")) { message.reply("sorry...") setTimeout(function () { }, 60000) } else { client.commands.get('replyToAmy').execute(message); } } }) setTimeout parece funcionar solo con funciones que estoy confundido sobre cómo puedo aplicarlo al client.on . Si setTimeout el bot comenzará a responder nuevamente. ¿Cómo puedo hacer que el bot deje de responder durante un tiempo determinado después de que el usuario diga "cállate"?
Una forma de hacerlo sería crear una variable booleana fuera de la client.on('message') . Luego, el bot seguirá enviando un mensaje siempre que la variable booleana se establezca en verdadero. Una vez que el usuario le dice al bot que se detenga, la variable booleana se establece en falso y puede crear un .setTimeout() durante el tiempo especificado después del cual la variable booleana volverá a ser verdadera. Y luego todo lo que tenemos que hacer es verificar si la variable booleana es verdadera o no cada vez que enviamos el mensaje. El código podría ser algo como esto:
let keepReplying = true const userId = 'the users id' client.on('message', message => { if (message.author.id === userId) { if (message.content === 'stop') { keepReplying = false setTimeout(() => { keepReplying = true }, 60000) } } if (keepReplying) client.commands.get('replyToAmy').execute(message); })¿Quizás crear una lista para contener al usuario que dijo cállate y marca de tiempo y luego funciona para verificar al usuario de esa lista y comparar el tiempo con la marca de tiempo?
bueno, si la marca de tiempo del usuario> 1 hora, elimine eso de la lista
aunque hay una mejor manera, pero esta es la ruta fácil. y no la forma más efectiva, ya que sería demasiado desperdicio con muchos usuarios
pero a partir de su código parece que acaba de hacer un pequeño proyecto para un pequeño grupo de usuarios, por lo que no hay problema