aboutsummaryrefslogtreecommitdiff
path: root/src/commands/moulberry-bush
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-01-01 08:53:23 -0500
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-01-01 08:53:23 -0500
commite0ae0639d0b36c3cfd4065f791b95a32c1d7ea64 (patch)
tree46547b51ad50b0a7a73fbc848ad643f8736399ae /src/commands/moulberry-bush
parentcbb68773614e44eb246e4cf2ff0d64d3e90f620f (diff)
downloadtanzanite-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.ts21
-rw-r--r--src/commands/moulberry-bush/rule.ts41
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()
- });
- }
- }
}
}