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

150
Vistas
Cómo detener MessageCollector con mensaje personalizado

Tengo un comando de barra que recopila mensajes de los usuarios. Los usuarios deben ingresar sus apodos del juego y luego el bot debe regresar en 2 equipos embeded . Logré filtrar y recopilar apodos y funciones de cálculo de llamadas. Esto funciona si ingreso el número máximo de apodos, pero ahora quiero agregar una función, donde dejaría de recopilar manualmente enviando el mensaje "detener". Ahora no sé dónde agregar la condición if(m.content==="stop") {collector.stop();}

 const { SlashCommandBuilder } = require("@discordjs/builders"); const { getSummonerProfile } = require("./../functions/summonerData"); const { MessageEmbed } = require("discord.js"); let arrayOfSummoners = []; let arrayOfNicknames = []; async function checkIfSummonerExist(m) { const test = await getSummonerProfile(m.content); if (test && m.author.bot == false && !arrayOfNicknames.includes(m.content)) { m.react("👍"); return true; } else if (test == false && m.author.bot == false) { m.react("👎"); return false; } if (arrayOfNicknames.includes(m.content)) { m.react("👎"); } } module.exports = { data: new SlashCommandBuilder() .setName("custom") .setDescription("Enter the name of the user."), async execute(interaction) { await interaction.deferReply(); interaction.editReply("Insert users"); const exampleEmbed = new MessageEmbed() .setColor("#0099ff") .setTimestamp(); // `m` is a message object that will be passed through the filter function const filter = (m) => checkIfSummonerExist(m); const collector = interaction.channel.createMessageCollector({ filter, max: 4, }); if(m.content==="stop") { collector.stop(); } collector.on("collect", (m) => { arrayOfNicknames.push(m.content); exampleEmbed.addFields({ name: "Regular field title", value: m.content, inline:true }); }); collector.on("end", (collected) => { interaction.followUp({ embeds: [exampleEmbed] }); }); }, };

Si agrego esta condición en la función de filter fuction (checkIfSummonerExist(m) , obtengo el error collector is not defined y si lo llamo en execute , como en el ejemplo anterior, obtengo el error m is not defined

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

0

Pondría la declaración if dentro del collector.on . en la devolución de llamada. Algo como esto:

 collector.on("collect", m => { if(m.content === "stop") return collector.stop() // Other code })
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