Add command for self-role management

develop
Nathan Steel 4 years ago
parent 126ae1bc38
commit 1864565977

@ -0,0 +1,54 @@
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
});
},
};
Loading…
Cancel
Save