Add handling of autocompletion interactions
This commit is contained in:
parent
ec7df40edb
commit
3cf2af7aed
2 changed files with 10 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
||||||
import { PermissionsBitField } from "discord.js";
|
import { AutocompleteInteraction, PermissionsBitField } from "discord.js";
|
||||||
import { RESTPostAPIApplicationCommandsJSONBody } from "discord.js";
|
import { RESTPostAPIApplicationCommandsJSONBody } from "discord.js";
|
||||||
import { ApplicationCommandOption, ApplicationCommandType, ChatInputCommandInteraction, LocalizationMap, MessageInteraction, PermissionResolvable, UserSelectMenuInteraction } from "discord.js";
|
import { ApplicationCommandOption, ApplicationCommandType, ChatInputCommandInteraction, LocalizationMap, MessageInteraction, PermissionResolvable, UserSelectMenuInteraction } from "discord.js";
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ interface Command<Type extends keyof InteractionTypeMap = ApplicationCommandType
|
||||||
abstract class Command<Type extends keyof InteractionTypeMap = ApplicationCommandType> {
|
abstract class Command<Type extends keyof InteractionTypeMap = ApplicationCommandType> {
|
||||||
abstract execute(interaction: InteractionTypeMap[Type][0]): Promise<void>;
|
abstract execute(interaction: InteractionTypeMap[Type][0]): Promise<void>;
|
||||||
|
|
||||||
|
autocomplete?(interaction: Type extends ApplicationCommandType.ChatInput ? AutocompleteInteraction : never ): Promise<void>;
|
||||||
|
|
||||||
toRESTPostApplicationCommands(): RESTPostAPIApplicationCommandsJSONBody {
|
toRESTPostApplicationCommands(): RESTPostAPIApplicationCommandsJSONBody {
|
||||||
return {
|
return {
|
||||||
name: this.name,
|
name: this.name,
|
||||||
|
|
|
@ -32,6 +32,13 @@ export default class CommandManager {
|
||||||
foundCommand.execute(interaction);
|
foundCommand.execute(interaction);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (interaction.isAutocomplete()) {
|
||||||
|
const foundCommand = this.commands.find((command) => command.name == interaction.commandName );
|
||||||
|
if (!foundCommand) throw new Error(`Unknown command received (${interaction.commandName}). Did you forgot to push updated commands?`);
|
||||||
|
if (!foundCommand.autocomplete) return;
|
||||||
|
foundCommand.autocomplete(interaction);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bindClient(client: DiscordClient) {
|
bindClient(client: DiscordClient) {
|
||||||
|
|
Loading…
Reference in a new issue