import { Interaction, Message, RESTPostAPIApplicationCommandsJSONBody } from 'discord.js'; import { Provider } from 'nconf'; import { ILogger } from 'tsdatautils-core'; import { IDiscordBot } from './DiscordBot'; export declare enum CommandResultStatus { pending = 0, executing = 1, success = 2, error = 3 } export declare enum CommandInputContext { message = 0, interaction = 1, none = 2 } export interface ICommandResult { status: CommandResultStatus; error: Error; message: string; replyHandled: boolean; } export declare class CommandResult implements ICommandResult { status: CommandResultStatus; error: Error; message: string; replyHandled: boolean; constructor(status?: CommandResultStatus); static buildSimpleError(errorString: string, errorObj?: Error): CommandResult; } export interface ICommand { commandName: string; commandDescription: string; inputSettings: CommandInputSettings; setupInputSettings(bot: IDiscordBot): Promise; execute(bot: IDiscordBot, input: CommandUserInput): Promise; } export interface ICommandFactory { makeCommand(): ICommand; } export interface ICommandConfig { configProvider: Provider; } export interface ICommandLogger { logger: ILogger; } export declare enum CommandMatchingType { prefixedOneWord = 0, exactMatch = 1, startsWith = 2 } export declare class CommandUserInput { inputContext: CommandInputContext; msg: Message; interaction: Interaction; constructor(inputContext?: CommandInputContext, msg?: Message, interaction?: Interaction); } export declare class CommandInputSettings { messageMatchingSettings: CommandMatchingSettings; interactionSettings: CommandInteractionSettings; constructor(messageMatchSettings?: CommandMatchingSettings, interactionSettings?: CommandInteractionSettings); } export declare class CommandMatchingSettings { matchingType: CommandMatchingType; commandMatchText: string; commandPartDelimiter: string; prefix: string; constructor(matchText?: string, matchingType?: CommandMatchingType, prefix?: string, partDelimiter?: string); } export declare class CommandInteractionSettings { interactions: CommandInteraction[]; } export declare enum CommandInteractionRegistrationContext { allGuilds = 0, guildList = 1, global = 2 } export declare enum CommandInteractionMainType { slashCommand = 0, contextUser = 1, contextMessage = 2 } export declare class CommandInteractionContextTypeSettings { name: string; } export declare class CommandInteraction { registrationContext: CommandInteractionRegistrationContext; registrationGuilds: string[]; applicationCommand: RESTPostAPIApplicationCommandsJSONBody; constructor(registrationContext?: CommandInteractionRegistrationContext, applicationCommand?: RESTPostAPIApplicationCommandsJSONBody, registrationGuilds?: string[]); }