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
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 })