@jadl/cmd
Version:
A command handler for JADL
46 lines (45 loc) • 2.05 kB
JavaScript
;
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() { }
});
});