diff options
Diffstat (limited to 'src/commands/config/blacklist.ts')
-rw-r--r-- | src/commands/config/blacklist.ts | 105 |
1 files changed, 41 insertions, 64 deletions
diff --git a/src/commands/config/blacklist.ts b/src/commands/config/blacklist.ts index da4ad18..a6e6a3d 100644 --- a/src/commands/config/blacklist.ts +++ b/src/commands/config/blacklist.ts @@ -1,6 +1,5 @@ -import { AllowedMentions, BushCommand, Global, type BushMessage, type BushSlashMessage } from '#lib'; -import { GuildTextBasedChannels } from 'discord-akairo'; -import { User } from 'discord.js'; +import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; +import { GuildTextBasedChannel, User } from 'discord.js'; export default class BlacklistCommand extends BushCommand { public constructor() { @@ -52,10 +51,10 @@ export default class BlacklistCommand extends BushCommand { public override async exec( message: BushMessage | BushSlashMessage, - args: { action: 'blacklist' | 'unblacklist'; target: GuildTextBasedChannels | User | string; global: boolean } + args: { action?: 'blacklist' | 'unblacklist'; target: GuildTextBasedChannel | User | string; global: boolean } ) { let action: 'blacklist' | 'unblacklist' | 'toggle' = - args.action ?? (message?.util?.parsed?.alias as 'blacklist' | 'unblacklist') ?? 'toggle'; + args.action ?? (message?.util?.parsed?.alias as 'blacklist' | 'unblacklist' | undefined) ?? 'toggle'; const global = args.global && message.author.isOwner(); const target = typeof args.target === 'string' @@ -64,65 +63,43 @@ export default class BlacklistCommand extends BushCommand { if (!target) return await message.util.reply(`${util.emojis.error} Choose a valid channel or user.`); const targetID = target.id; - if (global) { - if ((action as 'blacklist' | 'unblacklist' | 'toggle') === 'toggle') { - const globalDB = - (await Global.findByPk(client.config.environment)) ?? (await Global.create({ environment: client.config.environment })); - const blacklistedUsers = globalDB.blacklistedUsers; - const blacklistedChannels = globalDB.blacklistedChannels; - action = blacklistedUsers.includes(targetID) || blacklistedChannels.includes(targetID) ? 'unblacklist' : 'blacklist'; - } - const success = await util - .insertOrRemoveFromGlobal( - action === 'blacklist' ? 'add' : 'remove', - target instanceof User ? 'blacklistedUsers' : 'blacklistedChannels', - targetID - ) - .catch(() => false); - if (!success) - return await message.util.reply({ - content: `${util.emojis.error} There was an error globally ${action}ing ${util.format.input( - target instanceof User ? target.tag : target.name - )}.`, - allowedMentions: AllowedMentions.none() - }); - else - return await message.util.reply({ - content: `${util.emojis.success} Successfully ${action}ed ${util.format.input( - target instanceof User ? target.tag : target.name - )} globally.`, - allowedMentions: AllowedMentions.none() - }); - // guild disable - } else { - if (!message.guild) return await message.util.reply(`${util.emojis.error} You have to be in a guild to disable commands.`); - const blacklistedChannels = (await message.guild.getSetting('blacklistedChannels')) ?? []; - const blacklistedUsers = (await message.guild.getSetting('blacklistedUsers')) ?? []; - if ((action as 'blacklist' | 'unblacklist' | 'toggle') === 'toggle') { - action = blacklistedChannels.includes(targetID) ?? blacklistedUsers.includes(targetID) ? 'unblacklist' : 'blacklist'; - } - const newValue = util.addOrRemoveFromArray( - action === 'blacklist' ? 'add' : 'remove', - target instanceof User ? blacklistedUsers : blacklistedChannels, - targetID - ); - const success = await message.guild - .setSetting(target instanceof User ? 'blacklistedUsers' : 'blacklistedChannels', newValue, message.member!) - .catch(() => false); - if (!success) - return await message.util.reply({ - content: `${util.emojis.error} There was an error ${action}ing ${util.format.input( - target instanceof User ? target.tag : target.name - )}.`, - allowedMentions: AllowedMentions.none() - }); - else - return await message.util.reply({ - content: `${util.emojis.success} Successfully ${action}ed ${util.format.input( - target instanceof User ? target.tag : target.name - )}.`, - allowedMentions: AllowedMentions.none() - }); + if (!message.guild && global) + return await message.util.reply(`${util.emojis.error} You have to be in a guild to disable commands.`); + const blacklistedUsers = global + ? util.getGlobal('blacklistedUsers') + : (await message.guild!.getSetting('blacklistedChannels')) ?? []; + const blacklistedChannels = global + ? util.getGlobal('blacklistedChannels') + : (await message.guild!.getSetting('blacklistedUsers')) ?? []; + if (action === 'toggle') { + action = blacklistedUsers.includes(targetID) || blacklistedChannels.includes(targetID) ? 'unblacklist' : 'blacklist'; } + const newValue = util.addOrRemoveFromArray( + action === 'blacklist' ? 'add' : 'remove', + target instanceof User ? blacklistedUsers : blacklistedChannels, + targetID + ); + + const key = target instanceof User ? 'blacklistedUsers' : 'blacklistedChannels'; + + const success = await (global + ? util.setGlobal(key, newValue) + : message.guild!.setSetting(key, newValue, message.member!) + ).catch(() => false); + + if (!success) + return await message.util.reply({ + content: `${util.emojis.error} There was an error${global ? ' globally' : ''} ${action}ing ${util.format.input( + target instanceof User ? target.tag : target.name + )}.`, + allowedMentions: AllowedMentions.none() + }); + else + return await message.util.reply({ + content: `${util.emojis.success} Successfully ${action}ed ${util.format.input( + target instanceof User ? target.tag : target.name + )}${global ? ' globally' : ''}.`, + allowedMentions: AllowedMentions.none() + }); } } |