From 266d64b2ba6f06f31a49826fca470bae3dd28a7a Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 31 Dec 2017 08:53:50 -0600 Subject: [PATCH] blacklist command --- src/commands/Admin/blacklist.js | 36 +++++++++++++++++++++++++++++++++ src/languages/en-US.js | 7 +++++++ 2 files changed, 43 insertions(+) create mode 100644 src/commands/Admin/blacklist.js diff --git a/src/commands/Admin/blacklist.js b/src/commands/Admin/blacklist.js new file mode 100644 index 0000000000..7760ead920 --- /dev/null +++ b/src/commands/Admin/blacklist.js @@ -0,0 +1,36 @@ +const { Command } = require('klasa'); +const { Guild } = require('discord.js'); + +module.exports = class extends Command { + + constructor(...args) { + super(...args, { + permLevel: 10, + description: (msg) => msg.language.get('COMMAND_BLACKLIST_DESCRIPTION'), + usage: ' [...]', + usageDelim: ' ' + }); + } + + async run(msg, usersAndGuilds) { + usersAndGuilds = new Set(usersAndGuilds); + const usersAdded = []; + const usersRemoved = []; + const guildsAdded = []; + const guildsRemoved = []; + + for (const userOrGuild of usersAndGuilds) { + const type = userOrGuild instanceof Guild ? 'guild' : 'user'; + + await this.client.configs.update(`${type}Blacklist`, userOrGuild.id, msg.guild); + + if (type === 'guild' && this.client.guildBlacklist.includes(userOrGuild.id)) guildsAdded.push(userOrGuild.name); + else if (type === 'guild') guildsRemoved.push(userOrGuild.name); + else if (type === 'user' && this.client.userBlacklist.includes(userOrGuild.id)) usersAdded.push(userOrGuild.username); + else usersRemoved.push(userOrGuild.username); + } + + return msg.sendMessage(msg.language.get('COMMAND_BLACKLIST_SUCCESS', usersAdded, usersRemoved, guildsAdded, guildsRemoved)); + } + +}; diff --git a/src/languages/en-US.js b/src/languages/en-US.js index 60d2ab67e7..7fa34afdde 100644 --- a/src/languages/en-US.js +++ b/src/languages/en-US.js @@ -49,6 +49,13 @@ module.exports = class extends Language { INHIBITOR_REQUIRED_CONFIGS: (configs) => `The guild is missing the **${configs.join(', ')}** guild setting${configs.length !== 1 ? 's' : ''} and thus the command cannot run.`, INHIBITOR_RUNIN: (types) => `This command is only available in ${types} channels`, INHIBITOR_RUNIN_NONE: (name) => `The ${name} command is not configured to run in any channel.`, + COMMAND_BLACKLIST_DESCRIPTION: 'Blacklists or un-blacklists users and guilds from the bot.', + COMMAND_BLACKLIST_SUCCESS: (usersAdded, usersRemoved, guildsAdded, guildsRemoved) => [ + usersAdded.length ? `**UsersAdded**\n${util.codeBlock('', usersAdded.join(', '))}` : '', + usersRemoved.length ? `**UsersRemoved**\n${util.codeBlock('', usersRemoved.join(', '))}` : '', + guildsAdded.length ? `**GuildsAdded**\n${util.codeBlock('', guildsAdded.join(', '))}` : '', + guildsRemoved.length ? `**GuildsRemoved**\n${util.codeBlock('', guildsRemoved.join(', '))}` : '' + ].filter(val => val !== '').join('\n'), COMMAND_EVAL_DESCRIPTION: 'Evaluates arbitrary Javascript. Reserved for bot owner.', COMMAND_EVAL_EXTENDEDHELP: [ 'The eval command evaluates code as-in, any error thrown from it will be handled.',