@globalart/nestcord
Version:
A module for creating Discord bots using NestJS, based on Discord.js
116 lines (115 loc) • 4.63 kB
TypeScript
import { ApplicationCommand, ApplicationCommandOptionType, ApplicationCommandSubCommandData, ApplicationCommandSubGroupData, ApplicationCommandType, AutocompleteInteraction, ChatInputApplicationCommandData, ChatInputCommandInteraction, Collection, CommandInteractionOptionResolver, Snowflake } from 'discord.js';
import { APIApplicationCommandOptionBase } from 'discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/base';
import { BaseCommandMeta, CommandDiscovery } from '../command.discovery';
interface BaseSlashCommandMeta {
category?: string;
guilds?: Snowflake[];
discordResponse?: ApplicationCommand;
}
export interface ChatInputSlashCommandMeta extends BaseSlashCommandMeta, ChatInputApplicationCommandData {
type: ApplicationCommandType.ChatInput;
}
export interface SubcommandSlashCommandMeta extends BaseSlashCommandMeta, ApplicationCommandSubCommandData {
type: ApplicationCommandOptionType.Subcommand;
}
export interface SubcommandGroupSlashCommandMeta extends BaseCommandMeta, ApplicationCommandSubGroupData {
type: ApplicationCommandOptionType.SubcommandGroup;
}
export type SlashCommandMeta = ChatInputSlashCommandMeta | SubcommandSlashCommandMeta | SubcommandGroupSlashCommandMeta;
export interface OptionMeta extends APIApplicationCommandOptionBase<ApplicationCommandOptionType> {
resolver?: keyof CommandInteractionOptionResolver;
}
/**
* Represents a slash command discovery.
*/
export declare class SlashCommandDiscovery extends CommandDiscovery<SlashCommandMeta> {
readonly subcommands: Collection<string, SlashCommandDiscovery>;
/**
* Returns the command description.
*/
getDescription(): string;
/**
* Sets the command description.
* @param command The command discovery.
*/
setSubcommand(command: SlashCommandDiscovery): void;
/**
* Ensures a subcommand exists.
* @param command
*/
ensureSubcommand(command: SlashCommandDiscovery): SlashCommandDiscovery;
/**
* Returns the subcommand.
* @param name
*/
getSubcommand(name: string): SlashCommandDiscovery;
/**
* Returns the subcommands.
*/
getSubcommands(): Collection<string, SlashCommandDiscovery>;
/**
* Returns raw options from metadata.
*/
getRawOptions(): Record<string, OptionMeta>;
/**
* Returns the options.
*/
getOptions(): any;
/**
* Executes the command.
* @param interaction
* @param depth
*/
execute(interaction: ChatInputCommandInteraction | AutocompleteInteraction, depth?: number): any;
/**
* Returns whether the discovery is a slash command.
*/
isSlashCommand(): this is SlashCommandDiscovery;
/**
* Returns the JSON representation of the discovery.
*/
toJSON(): {
options: any;
type: ApplicationCommandType.ChatInput;
category?: string;
guilds?: Snowflake[];
discordResponse?: ApplicationCommand;
description: string;
descriptionLocalizations?: import("discord.js").LocalizationMap;
name: string;
nameLocalizations?: import("discord.js").LocalizationMap;
dmPermission?: boolean;
defaultMemberPermissions?: import("discord.js").PermissionResolvable | null;
nsfw?: boolean;
contexts?: readonly import("discord.js").InteractionContextType[];
integrationTypes?: readonly import("discord.js").ApplicationIntegrationType[];
} | {
options: any;
type: ApplicationCommandOptionType.Subcommand;
category?: string;
guilds?: Snowflake[];
discordResponse?: ApplicationCommand;
name: string;
description: string;
descriptionLocalizations?: import("discord.js").LocalizationMap;
nameLocalizations?: import("discord.js").LocalizationMap;
autocomplete?: never;
} | {
options: any;
type: ApplicationCommandOptionType.SubcommandGroup;
guilds?: Snowflake[];
category?: string;
discordResponse?: ApplicationCommand;
name: string;
nameLocalizations?: import("discord.js").LocalizationMap;
dmPermission?: boolean;
defaultMemberPermissions?: import("discord.js").PermissionResolvable | null;
nsfw?: boolean;
contexts?: readonly import("discord.js").InteractionContextType[];
integrationTypes?: readonly import("discord.js").ApplicationIntegrationType[];
description: string;
descriptionLocalizations?: import("discord.js").LocalizationMap;
autocomplete?: never;
};
}
export {};