diff --git a/assets/json/currency.json b/assets/json/currency.json index 06fe2787..c5d5599f 100644 --- a/assets/json/currency.json +++ b/assets/json/currency.json @@ -1,34 +1,34 @@ [ - "AUD", - "USD", - "BGN", - "BRL", - "CAD", - "CHF", - "CNY", - "CZK", - "DKK", - "GBP", - "HKD", - "HRK", - "HUF", - "IDR", - "ILS", - "INR", - "JPY", - "KRW", - "MXN", - "MYR", - "NOK", - "NZD", - "PHP", - "PLN", - "RON", - "RUB", - "SEK", - "SGD", - "THB", - "TRY", - "ZAR", - "EUR" + "aud", + "usd", + "bgn", + "brl", + "cad", + "chf", + "cny", + "czk", + "dkk", + "gbp", + "hkd", + "hrk", + "huf", + "idr", + "ils", + "inr", + "jpy", + "krw", + "mxn", + "myr", + "nok", + "nzd", + "php", + "pln", + "ron", + "rub", + "sek", + "sgd", + "thb", + "try", + "zar", + "eur" ] diff --git a/commands/avatar-edit/hat.js b/commands/avatar-edit/hat.js index 8afa9b51..770300bf 100644 --- a/commands/avatar-edit/hat.js +++ b/commands/avatar-edit/hat.js @@ -22,12 +22,8 @@ module.exports = class HatCommand extends Command { { key: 'type', prompt: `What type of hat would you like to use? Either ${list(hats, 'or')}.`, - type: 'string', - validate: type => { - if (hats.includes(type.toLowerCase())) return true; - return `Invalid type, please enter either ${list(hats, 'or')}.`; - }, - parse: type => type.toLowerCase() + type: 'choice', + choices: hats }, { key: 'user', diff --git a/commands/events/horoscope.js b/commands/events/horoscope.js index 83635114..c402aae6 100644 --- a/commands/events/horoscope.js +++ b/commands/events/horoscope.js @@ -17,12 +17,8 @@ module.exports = class HoroscopeCommand extends Command { { key: 'sign', prompt: `Which sign would you like to get the horoscope for? Either ${list(signs, 'or')}.`, - type: 'string', - validate: sign => { - if (signs.includes(sign.toLowerCase())) return true; - return `Invalid sign, please enter either ${list(signs, 'or')}.`; - }, - parse: sign => sign.toLowerCase() + type: 'choice', + choices: signs } ] }); diff --git a/commands/games/math-quiz.js b/commands/games/math-quiz.js index 02c85902..7bb419f3 100644 --- a/commands/games/math-quiz.js +++ b/commands/games/math-quiz.js @@ -24,12 +24,8 @@ module.exports = class MathQuizCommand extends Command { { key: 'difficulty', prompt: `What should the difficulty of the game be? Either ${list(difficulties, 'or')}.`, - type: 'string', - validate: difficulty => { - if (difficulties.includes(difficulty.toLowerCase())) return true; - return `Invalid difficulty, please enter either ${list(difficulties, 'or')}.`; - }, - parse: difficulty => difficulty.toLowerCase() + type: 'choice', + choices: difficulties } ] }); diff --git a/commands/games/quiz.js b/commands/games/quiz.js index b3a34fdb..ffd88a38 100644 --- a/commands/games/quiz.js +++ b/commands/games/quiz.js @@ -22,24 +22,16 @@ module.exports = class QuizCommand extends Command { { key: 'type', prompt: `Which type of question would you like to have? Either ${list(types, 'or')}.`, - type: 'string', + type: 'choice', default: 'multiple', - validate: type => { - if (types.includes(type.toLowerCase())) return true; - return `Invalid type, please enter either ${list(types, 'or')}.`; - }, - parse: type => type.toLowerCase() + choices: types }, { key: 'difficulty', prompt: `What should the difficulty of the game be? Either ${list(difficulties, 'or')}.`, - type: 'string', + type: 'choice', default: '', - validate: difficulty => { - if (difficulties.includes(difficulty.toLowerCase())) return true; - return `Invalid difficulty, please enter either ${list(difficulties, 'or')}.`; - }, - parse: difficulty => difficulty.toLowerCase() + choices: difficulties } ] }); diff --git a/commands/games/rock-paper-scissors.js b/commands/games/rock-paper-scissors.js index 99397845..3542453b 100644 --- a/commands/games/rock-paper-scissors.js +++ b/commands/games/rock-paper-scissors.js @@ -13,8 +13,8 @@ module.exports = class RockPaperScissorsCommand extends Command { { key: 'choice', prompt: 'Rock, Paper, or Scissors?', - type: 'string', - parse: choice => choice.toLowerCase() + type: 'choice', + choices } ] }); diff --git a/commands/games/typing-test.js b/commands/games/typing-test.js index 284ed17d..8d03e3e0 100644 --- a/commands/games/typing-test.js +++ b/commands/games/typing-test.js @@ -24,12 +24,8 @@ module.exports = class TypingTestCommand extends Command { { key: 'difficulty', prompt: `What should the difficulty of the game be? Either ${list(difficulties, 'or')}.`, - type: 'string', - validate: difficulty => { - if (difficulties.includes(difficulty.toLowerCase())) return true; - return `Invalid difficulty, please enter either ${list(difficulties, 'or')}.`; - }, - parse: difficulty => difficulty.toLowerCase() + type: 'choice', + choices: difficulties } ] }); diff --git a/commands/info/channel.js b/commands/info/channel.js index d1a8590f..41a5e0bf 100644 --- a/commands/info/channel.js +++ b/commands/info/channel.js @@ -33,7 +33,7 @@ module.exports = class ChannelInfoCommand extends Command { const embed = new MessageEmbed() .setColor(0x00AE86) .addField('❯ Name', - channel.name || 'None', true) + channel.type !== 'dm' ? channel.name : `@${channel.recipient.username}`, true) .addField('❯ ID', channel.id, true) .addField('❯ NSFW', diff --git a/commands/info/emoji-list.js b/commands/info/emoji-list.js index dc1fe096..f4252433 100644 --- a/commands/info/emoji-list.js +++ b/commands/info/emoji-list.js @@ -15,13 +15,9 @@ module.exports = class EmojiListCommand extends Command { { key: 'type', prompt: `What type of emoji would you like to view? Either ${list(types, 'or')}.`, - type: 'string', + type: 'choice', default: 'regular', - validate: type => { - if (types.includes(type.toLowerCase())) return true; - return `Invalid type, please enter either ${list(types, 'or')}.`; - }, - parse: type => type.toLowerCase() + choices: types } ] }); diff --git a/commands/number-edit/currency.js b/commands/number-edit/currency.js index 49aaa59c..0dd0c362 100644 --- a/commands/number-edit/currency.js +++ b/commands/number-edit/currency.js @@ -16,22 +16,14 @@ module.exports = class CurrencyCommand extends Command { { key: 'base', prompt: `What currency code do you want to use as the base? Either ${list(codes, 'or')}.`, - type: 'string', - validate: base => { - if (codes.includes(base.toUpperCase())) return true; - return `Invalid base, please enter either ${list(codes, 'or')}.`; - }, - parse: base => base.toUpperCase() + type: 'choice', + choices: codes }, { key: 'target', prompt: `What currency code do you want to convert to? Either ${list(codes, 'or')}.`, - type: 'string', - validate: target => { - if (codes.includes(target.toUpperCase())) return true; - return `Invalid target, please enter either ${list(codes, 'or')}.`; - }, - parse: target => target.toUpperCase() + type: 'choice', + choices: codes }, { key: 'amount', diff --git a/commands/random/name.js b/commands/random/name.js index 5d2656ca..1482d3f0 100644 --- a/commands/random/name.js +++ b/commands/random/name.js @@ -15,13 +15,9 @@ module.exports = class NameCommand extends Command { { key: 'gender', prompt: `Which gender do you want to generate a name for? Either ${list(genders, 'or')}.`, - type: 'string', + type: 'choice', default: 'both', - validate: gender => { - if (genders.includes(gender.toLowerCase())) return true; - return `Invalid gender, please enter either ${list(genders, 'or')}.`; - }, - parse: gender => gender.toLowerCase() + choices: genders } ] }); diff --git a/commands/search/deviantart.js b/commands/search/deviantart.js index 0ac50d58..928a4cdf 100644 --- a/commands/search/deviantart.js +++ b/commands/search/deviantart.js @@ -16,12 +16,8 @@ module.exports = class DeviantartCommand extends Command { { key: 'section', prompt: `What section would you like to search? Either ${list(sections, 'or')}.`, - type: 'string', - validate: section => { - if (sections.includes(section.toLowerCase())) return true; - return `Invalid section, please enter either ${list(sections, 'or')}.`; - }, - parse: section => section.toLowerCase() + type: 'choice', + choices: sections }, { key: 'query', diff --git a/commands/search/urban-dictionary.js b/commands/search/urban-dictionary.js index 8cf00d15..e1cc2c96 100644 --- a/commands/search/urban-dictionary.js +++ b/commands/search/urban-dictionary.js @@ -1,7 +1,7 @@ const { Command } = require('discord.js-commando'); const { MessageEmbed } = require('discord.js'); const snekfetch = require('snekfetch'); -const { shorten, list } = require('../../util/Util'); +const { shorten } = require('../../util/Util'); const types = ['random', 'top']; module.exports = class UrbanDictionaryCommand extends Command { @@ -23,13 +23,9 @@ module.exports = class UrbanDictionaryCommand extends Command { { key: 'type', prompt: 'Do you want to get the top answer or a random one?', - type: 'string', + type: 'choice', default: 'top', - validate: type => { - if (types.includes(type.toLowerCase())) return true; - return `Invalid type, please enter either ${list(types, 'or')}.`; - }, - parse: type => type.toLowerCase() + choices: types } ] }); diff --git a/commands/text-edit/base64.js b/commands/text-edit/base64.js index 05592468..fc2b2a54 100644 --- a/commands/text-edit/base64.js +++ b/commands/text-edit/base64.js @@ -15,12 +15,8 @@ module.exports = class Base64Command extends Command { { key: 'mode', prompt: `Would you like to ${list(modes, 'or')}?`, - type: 'string', - validate: mode => { - if (modes.includes(mode.toLowerCase())) return true; - return `Invalid mode, please enter either ${list(modes, 'or')}.`; - }, - parse: mode => mode.toLowerCase() + type: 'choice', + choices: modes }, { key: 'text', diff --git a/commands/text-edit/binary.js b/commands/text-edit/binary.js index 9d8056e3..50baf781 100644 --- a/commands/text-edit/binary.js +++ b/commands/text-edit/binary.js @@ -14,12 +14,8 @@ module.exports = class BinaryCommand extends Command { { key: 'mode', prompt: `Would you like to ${list(modes, 'or')}?`, - type: 'string', - validate: mode => { - if (modes.includes(mode.toLowerCase())) return true; - return `Invalid mode, please enter either ${list(modes, 'or')}.`; - }, - parse: mode => mode.toLowerCase() + type: 'choice', + choices: modes }, { key: 'text', diff --git a/package.json b/package.json index d7845fa6..70af7280 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "69.0.0", + "version": "69.0.1", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": { diff --git a/types/choice.js b/types/choice.js new file mode 100644 index 00000000..91d5d5cb --- /dev/null +++ b/types/choice.js @@ -0,0 +1,19 @@ +const { ArgumentType } = require('discord.js-commando'); +const { list } = require('../util/Util'); + +class ChoiceArgumentType extends ArgumentType { + constructor(client) { + super(client, 'choice'); + } + + validate(value, msg, arg) { + if (arg.choices.includes(value.toLowerCase())) return true; + return `Invalid ${arg.label}, please enter either ${list(arg.choices, 'or')}.`; + } + + parse(value) { + return value.toLowerCase(); + } +} + +module.exports = ChoiceArgumentType;