UNPKG

@jadl/cmd

Version:
46 lines (45 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AutoComplete = void 0; const v10_1 = require("discord-api-types/v10"); const v9_1 = require("discord-api-types/v9"); const Symbols_1 = require("../../Symbols"); const Decorators_1 = require("../../utils/Decorators"); exports.AutoComplete = Decorators_1.Decorators.createParameterAddition(([handle], cmd, base, index) => { if (!base[Symbols_1.Symbols.injections]) base[Symbols_1.Symbols.injections] = []; const option = cmd.interactionOptions.find((x) => x.name === cmd.indexToOption[index]); option.autocomplete = true; base[Symbols_1.Symbols.injections].push({ async _onInteraction(int, worker) { if (int.type !== v9_1.InteractionType.ApplicationCommandAutocomplete) return; let opt; if (cmd.name !== Symbols_1.Symbols.baseCommand) { const subCommand = int.data.options?.find((x) => x.name === cmd.name); if (subCommand?.type === v9_1.ApplicationCommandOptionType.Subcommand) { opt = subCommand.options?.find((x) => x.name === option.name && x.type === v9_1.ApplicationCommandOptionType.String && x.focused); } } else { opt = int.data.options?.find((x) => x.name === option.name && x.type === v9_1.ApplicationCommandOptionType.String && x.focused); } if (!opt) return; const res = await handle(opt.value, worker, int); void worker.api.post(v9_1.Routes.interactionCallback(int.id, int.token), { body: { type: v10_1.InteractionResponseType.ApplicationCommandAutocompleteResult, data: { choices: res } } }); }, _setup() { } }); });