diff --git a/commands/config.js b/commands/config.js index 9fb324b..cb9a02c 100644 --- a/commands/config.js +++ b/commands/config.js @@ -1,4 +1,4 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); +const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, Embed } = require('discord.js'); const bitfieldCalculator = require('discord-bitfield-calculator'); module.exports = { @@ -75,6 +75,31 @@ module.exports = { }, ] }, + { + name: "exclude_role", + description: "Exclude roles from users to use to claim a flag.", + value: "exclude_role", + type: 1, + options: [ + { + name: "add_or_remove", + description: "Add or remove a role from the exclude list.", + value: "add_or_remove", + type: 3, + choices: [ + { name: 'add', value: 'add' }, { name: 'remove', value: 'remove' }, + ], + required: true, + }, + { + name: "role", + description: "The role to manage", + value: "role", + type: 8, + required: true, + }, + ] + }, { name: "reset", description: "Restore all settings to default configurations", @@ -189,6 +214,31 @@ module.exports = { return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } + } else if (args[0].name == 'exclude') { + + if (args[0].options[0].value == 'add') { + client.dbo.collection('guilds').updateOne({'server.serverID': GuildDB.serverID}, {$push: {'server.excludedRoles': args[0].options[1].value}}, function(err, res) { + if (err) return client.sendInternalError(interaction, err); + }) + + const success = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setDescription(`**Done!**\n> Successfully added <@&${args[0].options[1].value}> to list of excluded roles.`) + + return interaction.send({ embeds: [success] }); + + } else if (args[0].options[0].value == 'remove') { + client.dbo.collection('guilds').updateOne({'server.serverID': GuildDB.serverID}, {$pull: {'server.excludedRoles': args[0].options[1].value}}, function(err, res) { + if (err) return client.sendInternalError(interaction, err); + }) + + const success = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setDescription(`**Done!**\n> Successfully removed <@&${args[0].options[1].value}> to list of excluded roles.`) + + return interaction.send({ embeds: [success] }); + } + } else if (args[0].name == 'reset') { const prompt = new EmbedBuilder() .setTitle(`Woah!? Hold on.`) diff --git a/structures/DayzArmbands.js b/structures/DayzArmbands.js index f1c6eea..412239f 100644 --- a/structures/DayzArmbands.js +++ b/structures/DayzArmbands.js @@ -195,6 +195,7 @@ class DayzArmbands extends Client { allowedChannels: [], factionArmbands: {}, usedArmbands: [], + excludedRoles: [], botAdmin: null, } } @@ -220,6 +221,7 @@ class DayzArmbands extends Client { allowedChannels: guild.server.allowedChannels, factionArmbands: guild.server.factionArmbands, usedArmbands: guild.server.usedArmbands, + excludedRoles: guild.server.excludedRoles, botAdmin: guild.server.botAdmin, }; }