diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-01-01 08:53:23 -0500 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-01-01 08:53:23 -0500 |
commit | e0ae0639d0b36c3cfd4065f791b95a32c1d7ea64 (patch) | |
tree | 46547b51ad50b0a7a73fbc848ad643f8736399ae /src/commands/moulberry-bush | |
parent | cbb68773614e44eb246e4cf2ff0d64d3e90f620f (diff) | |
download | tanzanite-e0ae0639d0b36c3cfd4065f791b95a32c1d7ea64.tar.gz tanzanite-e0ae0639d0b36c3cfd4065f791b95a32c1d7ea64.tar.bz2 tanzanite-e0ae0639d0b36c3cfd4065f791b95a32c1d7ea64.zip |
added autocomplete to a few commands and performed some fixes
Diffstat (limited to 'src/commands/moulberry-bush')
-rw-r--r-- | src/commands/moulberry-bush/capes.ts | 21 | ||||
-rw-r--r-- | src/commands/moulberry-bush/rule.ts | 41 |
2 files changed, 30 insertions, 32 deletions
diff --git a/src/commands/moulberry-bush/capes.ts b/src/commands/moulberry-bush/capes.ts index 4bdb360..ab6910a 100644 --- a/src/commands/moulberry-bush/capes.ts +++ b/src/commands/moulberry-bush/capes.ts @@ -1,5 +1,6 @@ import { BushCommand, ButtonPaginator, DeleteButton, type BushMessage, type OptionalArgType } from '#lib'; -import { type MessageEmbedOptions } from 'discord.js'; +import { AutocompleteInteraction, type MessageEmbedOptions } from 'discord.js'; +import Fuse from 'fuse.js'; import got from 'got'; export default class CapesCommand extends BushCommand { @@ -18,8 +19,8 @@ export default class CapesCommand extends BushCommand { prompt: 'What cape would you like to see?', retry: '{error} Choose a cape to see.', optional: true, - slashType: 'STRING' - // choices: client.consts.mappings.capes.map((v) => ({ name: v.name, value: v.name })) + slashType: 'STRING', + autocomplete: true } ], slash: true, @@ -96,6 +97,20 @@ export default class CapesCommand extends BushCommand { description: cape.purchasable ? ':money_with_wings: **purchasable** :money_with_wings:' : undefined }; } + + public override autocomplete(interaction: AutocompleteInteraction) { + const capes = client.consts.mappings.capes.map((v) => v.name); + + const fuzzy = new Fuse(capes, { + threshold: 0.5, + isCaseSensitive: false, + findAllMatches: true + }).search(interaction.options.getFocused().toString()); + + const res = fuzzy.slice(0, fuzzy.length >= 25 ? 25 : undefined).map((v) => ({ name: v.item, value: v.item })); + + void interaction.respond(res); + } } export interface GithubFile { diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts index ab2632c..28483a4 100644 --- a/src/commands/moulberry-bush/rule.ts +++ b/src/commands/moulberry-bush/rule.ts @@ -1,4 +1,4 @@ -import { AllowedMentions, BushCommand, type BushMessage, type OptionalArgType } from '#lib'; +import { AllowedMentions, BushCommand, BushSlashMessage, type BushMessage, type OptionalArgType } from '#lib'; import { MessageEmbed } from 'discord.js'; const rules = [ @@ -92,7 +92,7 @@ export default class RuleCommand extends BushCommand { } public override async exec( - message: BushMessage, + message: BushMessage | BushSlashMessage, { rule, user }: { rule: OptionalArgType<'integer'>; user: OptionalArgType<'user'> } ) { const rulesEmbed = new MessageEmbed() @@ -114,35 +114,18 @@ export default class RuleCommand extends BushCommand { if (rules[i]?.title && rules[i]?.description) rulesEmbed.addField(rules[i].title, rules[i].description); } } - await respond(); + await message.util.send({ + content: user ? `<@${user.id}>` : undefined, + embeds: [rulesEmbed], + allowedMentions: AllowedMentions.users(), + // If the original message was a reply -> imitate it + reply: + !message.util.isSlashMessage(message) && message.reference?.messageId + ? { messageReference: message.reference.messageId } + : undefined + }); if (!message.util.isSlash) { await message.delete().catch(() => {}); } - return; - async function respond() { - if (!user) { - return ( - // If the original message was a reply -> imitate it - message.reference?.messageId && !message.util.isSlash - ? await message.channel.messages.fetch(message.reference.messageId).then(async (message) => { - await message.reply({ embeds: [rulesEmbed], allowedMentions: AllowedMentions.users() }); - }) - : await message.util.send({ embeds: [rulesEmbed], allowedMentions: AllowedMentions.users() }) - ); - } else { - return message.reference?.messageId && !message.util.isSlash - ? await message.util.send({ - content: `<@!${user.id}>`, - embeds: [rulesEmbed], - allowedMentions: AllowedMentions.users(), - reply: { messageReference: message.reference.messageId } - }) - : await message.util.send({ - content: `<@!${user.id}>`, - embeds: [rulesEmbed], - allowedMentions: AllowedMentions.users() - }); - } - } } } |