¿Hay alguna forma de que dos personas utilicen un comando con botones al mismo tiempo en el mismo canal ?
Hice un sistema de aventuras que va bien hasta ahora, pero descubrí que solo una persona puede usarlo en un canal. Si otra persona lo usa en el mismo canal, el error "DiscordAPIError: Interacción desconocida" aparece tan pronto como se usa un botón. Intenté agregar la identificación del autor del mensaje a la identificación personalizada de los botones, pero todavía no funciona por alguna razón y estoy completamente confundido.
Por lo que entiendo, creo que no está relacionado con que haya múltiples instancias de botones, pero no puedo pensar en ninguna otra razón. Aquí está el filtro:
const filter = async (interaction) => { if (interaction.user.id === message.author.id) return true; await interaction.deferReply() await interaction.editReply({ content: `**${interaction.user.username}**, You can't use this button!`, ephemeral: true}) return false }Y el detector de clics de botón es algo como esto:
GameCollect.on('collect', async ButtonInteraction => { ButtonInteraction.deferUpdate() // My code })Yo he tratado:
Eliminando ButtonInteraction.deferUpdate() de todos mis recopiladores de clics.
Hacer que las identificaciones personalizadas para los botones tengan la identificación del autor del mensaje al final y hacer que mi código sea compatible con ese cambio.
Aplastando mi cabeza en mi teclado por la confusión. Tampoco funcionó... (sátira)
Si es necesario, puedo copiar mi código en una réplica para que pueda identificar el problema más fácilmente, pero no creo que las otras partes tengan ningún efecto en esto. Creo que es solo un código/un pequeño ajuste que debo agregar para que funcione con dos personas en el mismo canal.
EDITAR: Muy bien, aquí hay un contenedor de origen para que pueda identificar mejor el problema. Consulte los comentarios sobre la respuesta reciente para obtener algunas aclaraciones sobre mis pruebas también. Te mantendré informado si encuentro una solución.
DESCARGO DE RESPONSABILIDAD: Todavía no he encontrado una manera de hacer que esto funcione en más de un mes, y básicamente estoy renunciando a los botones. Gracias a todos los que ayudaron sin embargo.
Intentalo:
await interaction.deferReply() del filtroMath.random()EDITAR:
await interaction.deferReply() pronto, se complicará , así que aquí está la soluciónY no recuerde usar identificaciones aleatorias para los componentes (botones, menús de selección y...)
En lugar de crear un recopilador en el canal de texto, debe crear el recopilador en el mensaje real
const GameCollect = message.channel.createMessageComponentCollector({ filter, time: 60000 * 15 })A
const GameCollect = <Message>.createMessageComponentCollector({ filter, time: 60000 * 15 })