Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
Mensaje de intervalo Discord.js

¿Hay alguna forma de detener un intervalo en función del contenido de un mensaje específico? ¿O hacer que los usuarios detengan el intervalo primero antes de comenzar un nuevo intervalo?

Aquí está el código para iniciar un intervalo:

 const ms = require('ms') let interval; function isNumeric(str) { return !isNaN(str) && !isNaN(parseFloat(str)); } module.exports = { name: 'interval', aliases: ['int'], run: async (client, message, args) => { let time = args[0]; if(!time) return message.reply('Please enter the duration of message interval!').then(msg => { setTimeout(() => { msg.delete() }, 5000) }) .catch() let reason = args.slice(1).join(' '); if(!reason) return message.reply('Please enter a message!').then(msg => { setTimeout(() => { msg.delete() }, 5000) }) .catch() interval = setInterval(function() { message.channel.send(reason) .catch(console.error); }, ms(time)); }, stopInterval() { if(interval) { clearInterval(interval); } } }

El contenido del mensaje especificado sería el

 let reason = args.slice(1).join(' ');

En cuanto al código para detener el intervalo:

 const stopInt = require('./interval'); module.exports = { name: 'stopinterval', aliases: 'stopint', run: async (client, message, args) => { message.channel.send("Message reminder has been stopped."); stopInt.stopInterval(); } }

También tengo un problema que si uso el intervalo dos veces, solo puedo detener el último intervalo que creé y no pude detener el primero.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Podría usar un Set o una matriz para realizar un seguimiento de una lista de intervalos:

 const ms = require("ms"); const intervals = new Set() function isNumeric(str) { return !isNaN(str) && !isNaN(parseFloat(str)); } module.exports = { name: "interval", aliases: ["int"], run: async (client, message, args) => { let time = args[0]; if (!time) return message .reply("Please enter the duration of message interval!") .then((msg) => { setTimeout(() => { msg.delete(); }, 5000); }) .catch(); let reason = args.slice(1).join(" "); if (!reason) return message .reply("Please enter a message!") .then((msg) => { setTimeout(() => { msg.delete(); }, 5000); }) .catch(); intervals.add(setInterval(function () { message.channel.send(reason).catch(console.error); }, ms(time))); }, stopInterval() { for (const interval of intervals) { intervals.delete(interval); clearInterval(interval); } }, };

(Me tomé la libertad de formatear tu código usando más bonito)

No relacionado con su pregunta, pero noté:

  • Mezclaste async / await con .then / .catch
  • Las llamadas .catch() vacías deben eliminarse
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda