Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

297
Vistas
¿Cómo hago para que un bot de discordia deje de responder después de escribir "cállate"?

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"?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

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); })
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿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

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda