Estoy tratando de hacer un comando donde puedes poner un rol dentro de una opción. Si el usuario menciona un rol dentro de la opción slashcommand, este rol se convierte en una ID para luego agregarse al canal al canal para ver el contenido.
Si el usuario no pone ningún rol, el permiso se asigna en @todos
Intenté algo como esto como lo he visto en algunas situaciones que he investigado:
module.exports = { data: new SlashCommandBuilder() .setName("esconder") .setDescription("Comando para desativar a permissão de visualização nos chats.") .addStringOption(option => option.setName("cargo").setDescription("Informa uma quantidade de mensagens que queres apagar!")), async execute(interaction, client) { let cargo = " "; if (interaction.options._hoistedOptions[0]) { cargo = interaction.options._hoistedOptions[0].value; } else { cargo = "990039749362319380"; // Everyone ID } if (cargo) { const role2 = interaction.guild.roles.cache.find(role => role.name === cargo); const guild = client.guilds.cache.get(configGuids.servidores.principal); const role = guild.roles.cache.get(role2.id) interaction.channel.permissionOverwrites.edit(role, { VIEW_CHANNEL: true }); return await interaction.editReply({ content: `Added ${cargo} to the channel` }); } } };Pero no está funcionando como debería. Antes lo había puesto a dicción con el DNI y funcionaba perfectamente.
Utilice addRoleOption en su lugar.
Puede obtener el valor de una opción con esto: interaction.options.getRole('name') . Opciones de análisis
module.exports = { data: new SlashCommandBuilder() .setName("esconder") .setDescription("Comando para desativar a permissão de visualização nos chats.") .addRoleOption(option => { option.setName("cargo") .setDescription("Informa uma quantidade de mensagens que queres apagar!") .setRequired(true) return option; }), async execute(interaction, client) { const cargo = interaction.options.getRole("cargo"); interaction.channel.permissionOverwrites.edit(cargo.id, { VIEW_CHANNEL: true }); return await interaction.reply({ content: `Added ${cargo.name} to the channel` }); } };