Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

231
Views
Discord.js v13 los botones de función de reacción no funcionan después de reiniciar el bot

Este es el comando del botón de roles de reacción que funciona, pero después de reiniciar el bot dice Esta interacción falló , ¿cómo puedo solucionarlo? es imposible? estaba usando simplemente djs, pero no puedo cambiar el mensaje, cuando el usuario obtuvo sus roles, el bot enviará un mensaje y quiero cambiarlo, pero no puedo, así que uso recopilar y no funciona después de reiniciar el bot para que por que hago esta pregunta.

 const Command = require("../Structures/Command.js"); const Discord = require('discord.js'); const { MessageButton } = require('discord.js'); module.exports = new Command({ name: "reactionrolebuttons", description: "reaction role but button", async run(message, args, client, interaction, collect) { let embed = new Discord.MessageEmbed() .setTitle("Ping Roles:") .setColor("#0099ff") .setDescription("`Click some button bellow if you want get notified!`") const row = new Discord.MessageActionRow() .addComponents( new MessageButton() .setCustomId('Acm') .setLabel('Announcement') .setStyle('SECONDARY') .setEmoji("📰"), new MessageButton() .setCustomId('Gv') .setLabel('Giveaways') .setStyle('SECONDARY') .setEmoji("🎉") ) const m = await message.channel.send({ embeds: [embed], components: [row] }); const iFilter = i => i.user.id === message.author.id; const collector = m.createMessageComponentCollector({ filter: iFilter, time: 60000 }) collector.on('collect', async i => { if (i.customId === 'Acm') { const role = message.guild.roles.cache.get("901353036759310386"); if (i.member.roles.cache?.has('901353036759310386')) { i.member.roles.remove('901353036759310386') i.reply({ content: `${role} was removed from you`, ephemeral: true }); } else { i.member.roles.add('901353036759310386') i.reply({ content: `${role} was added to you`, ephemeral: true }); } } else if (i.customId === 'Gv') { const role = message.guild.roles.cache.get("901370872827346975"); if (i.member.roles.cache?.has('901370872827346975')) { i.member.roles.remove('901370872827346975') i.reply({ content: `${role} was removed from you`, ephemeral: true }); } else { i.member.roles.add('901370872827346975') i.reply({ content: `${role} was added to you`, ephemeral: true }); } } }) } });
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

en su filtro no olvide agregar await i.deferUpdate()

Además, su colector ya no parece usar await, si quiere usar async, simplemente agregue await también.

en el coleccionista

 await i.reply("......")

en tu filtro

 const filter = async i => { await i.deferUpdate() return i.customId && i.user.id === message.author.id; }

[Editar] También debe finalizar el recopilador después de que el usuario haga clic en el botón

 await i.reply.......... await collector.stop("complete")

Si desea continuar usando ese botón para la próxima interacción, no necesita colector por cierto,

Simplemente envuelva la condición en el evento interacciónCrear

 client.on("interactionCreate", async (interaction) => { if (!interaction.isButton()) return; if(interaction.customId === "Acm") { \\Your code here } })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!