diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-12-26 17:16:32 -0500 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2021-12-26 17:16:32 -0500 |
commit | fc390ffc300334c396d9d06b0feaf8fbc6ed2814 (patch) | |
tree | a6282a74cf99033291ac7bc9de123ae273d528d2 /src/commands/config | |
parent | 062435590980b87f5b054418ed88604e26358ae9 (diff) | |
download | tanzanite-fc390ffc300334c396d9d06b0feaf8fbc6ed2814.tar.gz tanzanite-fc390ffc300334c396d9d06b0feaf8fbc6ed2814.tar.bz2 tanzanite-fc390ffc300334c396d9d06b0feaf8fbc6ed2814.zip |
documentation, bug fixes etc
Diffstat (limited to 'src/commands/config')
-rw-r--r-- | src/commands/config/blacklist.ts | 105 | ||||
-rw-r--r-- | src/commands/config/config.ts | 2 | ||||
-rw-r--r-- | src/commands/config/disable.ts | 23 | ||||
-rw-r--r-- | src/commands/config/log.ts | 7 |
4 files changed, 60 insertions, 77 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() + }); } } diff --git a/src/commands/config/config.ts b/src/commands/config/config.ts index 6af5895..b88147d 100644 --- a/src/commands/config/config.ts +++ b/src/commands/config/config.ts @@ -97,7 +97,7 @@ export default class SettingsCommand extends BushCommand { }); } - override *args(message: BushMessage): Generator<ArgumentOptions | Flag> { + public override *args(message: BushMessage): Generator<ArgumentOptions | Flag> { const optional = message.util.parsed!.alias === 'settings'; const setting = yield { id: 'setting', diff --git a/src/commands/config/disable.ts b/src/commands/config/disable.ts index a30652a..44c28d3 100644 --- a/src/commands/config/disable.ts +++ b/src/commands/config/disable.ts @@ -1,6 +1,8 @@ -import { AllowedMentions, BushCommand, Global, type BushMessage, type BushSlashMessage } from '#lib'; +import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; export default class DisableCommand extends BushCommand { + private static blacklistedCommands = ['eval', 'disable']; + public constructor() { super('disable', { aliases: ['disable', 'enable'], @@ -45,20 +47,23 @@ export default class DisableCommand extends BushCommand { }); } - blacklistedCommands = ['eval', 'disable']; - public override async exec( message: BushMessage | BushSlashMessage, - args: { action: 'enable' | 'disable'; command: BushCommand | string; global: boolean } + args: { action?: 'enable' | 'disable'; command: BushCommand | string; global: boolean } ) { let action = (args.action ?? message?.util?.parsed?.alias ?? 'toggle') as 'disable' | 'enable' | 'toggle'; const global = args.global && message.author.isOwner(); - const commandID = (args.command as BushCommand).id; + const commandID = + args.command instanceof BushCommand + ? args.command.id + : (await util.arg.cast(util.arg.union('commandAlias', 'command'), message, args.command))?.id; + + if (!commandID) return await message.util.reply(`${util.emojis.error} Invalid command.`); + + if (DisableCommand.blacklistedCommands.includes(commandID)) + return message.util.send(`${util.emojis.error} the ${commandID} command cannot be disabled.`); - const disabledCommands = global - ? ((await Global.findByPk(client.config.environment)) ?? (await Global.create({ environment: client.config.environment }))) - .disabledCommands - : await message.guild!.getSetting('disabledCommands'); + const disabledCommands = global ? util.getGlobal('disabledCommands') : await message.guild!.getSetting('disabledCommands'); if (action === 'toggle') action = disabledCommands.includes(commandID) ? 'disable' : 'enable'; const newValue = util.addOrRemoveFromArray(action === 'disable' ? 'remove' : 'add', disabledCommands, commandID); diff --git a/src/commands/config/log.ts b/src/commands/config/log.ts index 6121ad7..52cb8f5 100644 --- a/src/commands/config/log.ts +++ b/src/commands/config/log.ts @@ -22,11 +22,12 @@ export default class LogCommand extends BushCommand { }, { id: 'channel', - description: 'The channel to have logs of the seleted type to be sent in.', + description: 'The channel to have logs of the selected type to be sent in.', type: 'channel', prompt: 'What channel would you like these logs to be sent in?', slashType: 'CHANNEL', - channelTypes: ['GUILD_TEXT', 'GUILD_NEWS', 'GUILD_NEWS_THREAD', 'GUILD_PUBLIC_THREAD', 'GUILD_PRIVATE_THREAD'] + channelTypes: ['GUILD_TEXT', 'GUILD_NEWS', 'GUILD_NEWS_THREAD', 'GUILD_PUBLIC_THREAD', 'GUILD_PRIVATE_THREAD'], + only: 'slash' } ], channel: 'guild', @@ -35,7 +36,7 @@ export default class LogCommand extends BushCommand { }); } - override *args(): IterableIterator<ArgumentOptions | Flag> { + public override *args(): IterableIterator<ArgumentOptions | Flag> { const log_type = yield { id: 'log_type', type: guildLogsArr, |