Tengo problemas para agregar un rol a un usuario con DiscordJS v13. ¿Hay alguna forma de hacerlo? Cada vez que los agrego, no están definidos. Aquí está el código donde quiero agregar el rol de agregar. Soy un principiante en discord.js, así que tengan paciencia conmigo. ¡Gracias!
} else if (commandName === 'verification'){ let code1 = 'A96B2UUH' const code = options.getString('code') if(code === code1){ interaction.reply({ content: 'The code has been accepted. Welcome to the hub!', ephemeral: true, }) let role = message.guild.roles.cache.some(role => role.name === 'Equitability') message.member.roles.add(role) }else{ interaction.reply({ content: 'You entered the wrong code. Please contact the administrators to gain access.', ephemeral: true, }) } } })Edito: ¡Lo arreglé! Cambié algunas cosas y de alguna manera funcionó. Aquí está el código.
bot.on('interactionCreate', async interaction => { if(!interaction.isCommand()) return const { options } = interaction if(interaction.commandName === 'verification'){ let code1 = 'A96B2UUH' const code = options.getString('code') if(code === code1){ await interaction.reply({ content: 'You entered the correct code. Welcome to the hub!', ephemeral: true, }) var guild = bot.guilds.cache.get('907259574342537236') const member = await guild.members.fetch(interaction.user.id) const role = await guild.roles.fetch('907261775622328352') member.roles.add(role) }else{ await interaction.reply({ content: 'The code you entered is incorrect. Contact the administrators to gain access the server.', ephemeral: true, }) } } })Está utilizando .some() que devuelve un Boolean ( true / false ). Desea el objeto de rol, por lo que usa .find() que toma los mismos argumentos, pero devuelve el objeto de rol en su lugar. Además, si el rol no está en caché, puede usar RoleManager.fetch() para obtenerlo de la API.
await message.guild.roles.fetch() //optional - put it if the role is valid, but is not cached let role = message.guild.roles.cache.find(role => role.name === 'Equitability') message.member.roles.add(role)Obtener roles en Discord.js v13 requiere que se almacenen en caché, por lo que la mejor manera de agregar un rol que sabes que existe es simplemente por ID.
Para obtener una ID para una función, abra Configuración del servidor> Funciones> Haga clic con el botón derecho> "Copiar ID"
Entonces puede simplemente hacer message.member.roles.add("roleId");
Si no está completamente seguro de si existe un rol (es decir, a través de la entrada del usuario), puede obtener todos los roles del servidor (diferentes a .cache.get ), luego .filter , sin embargo, esto no parece ser lo que está haciendo así que no lo incluiré