const { SlashCommandBuilder } = require('@discordjs/builders'); module.exports = { data: new SlashCommandBuilder() .setName('role') .setDescription('Apply a role to yourself, or remove yourself from it. Toggley') .addStringOption(option => option.setName("role") .setDescription('The role you wish to join') .setRequired(true) .addChoices( { name: 'Smite', value: '843092235016208404' }, { name: 'Factorio', value: '995806023094894642' }, { name: 'Minecraft', value: '854460008292286494' }, )), async execute(interaction) { // Get role id from the choice let roleId = interaction.options.getString('role'); // Then get the role itself let role = interaction.guild.roles.cache.get(roleId); // If the role doesn't exist, then exit if (!role){ await interaction.reply('Role not found'); console.log('Role not found ' + roleId); return; } // TODO: // Check if the user is already in role. // If they are we want to remove them if (interaction.member.roles.cache.has(roleId)) { console.log('in role already'); var reply = 'You\'ve been removed from the role ' + interaction.options.getString('role'); // Remove user from role interaction.member.roles.remove(role); } else { var reply = 'You\'ve been added to the role ' + interaction.options.getString('role'); // Add user to role interaction.member.roles.add(role); } // Return message to the user in Discord channel // Ephemeral only shows to the person that called the command await interaction.reply({ content: reply, ephemeral: true }); }, };