Estoy trabajando en un bot de discordia que se supone que debe prohibir a los miembros que reaccionaron a un mensaje específico con un emoticón específico. El archivo que creé para el evento messageReactionAdd actualmente contiene el siguiente código:
module.exports = { name: 'messageReactionAdd', execute(client, reaction, user) { const channel = client.channels.cache.find(channel => channel.name === 'test'); let message = 874736592542105640; let emotes = ['kannathinking', '🍎']; let roleID = (reaction.emoji.name == emotes[0] ? '874730080486686730' : '874729987310235738') if (message == reaction.message.id && (emotes[0] == reaction.emoji.name || emotes[1] == reaction.emoji.name)) { user.ban(); channel.send(`${user} was banned`); } } }Sin embargo, este código no funciona y me arroja el siguiente error:
user.ban() no es una función
Después de investigar un poco, descubrí que el comando ba solo funciona en objetos GuildMember. Desafortunadamente, esos no se crean cuando se llama a messageReactionAdd. ¿Alguien tiene una idea de cómo solucionarlo?
No es necesario que obtenga el objeto GuildMember , simplemente puede prohibir al usuario por ID de GuildMemberManager , que se puede encontrar en el objeto de reaction.message.guild.members a través de react.message.guild.members
Entonces, en lugar de usar user.ban() , puede usar
reaction.message.guild.members.ban(user.id)