///
import { Collection, DiscordAPIError, type ApplicationCommandData, type AutocompleteInteraction, type Awaitable, type ChatInputCommandInteraction, type Guild, type Message, type Snowflake, type TextBasedChannel, type User } from "discord.js";
import { z } from "zod";
import type { CommandHandlerEvents as CommandHandlerEventsType } from "../../typings/events.js";
import { ArrayOrNot, SyncOrAsync } from "../../typings/Util.js";
import { AkairoMessage } from "../../util/AkairoMessage.js";
import { AkairoClient } from "../AkairoClient.js";
import { AkairoHandler, AkairoHandlerOptions } from "../AkairoHandler.js";
import { ContextMenuCommandHandler } from "../contextMenuCommands/ContextMenuCommandHandler.js";
import type { InhibitorHandler } from "../inhibitors/InhibitorHandler.js";
import type { ListenerHandler } from "../listeners/ListenerHandler.js";
import type { TaskHandler } from "../tasks/TaskHandler.js";
import { ArgumentDefaults, DefaultArgumentOptions } from "./arguments/Argument.js";
import { TypeResolver } from "./arguments/TypeResolver.js";
import { Command } from "./Command.js";
import { CommandUtil } from "./CommandUtil.js";
import { Flag, FlagType } from "./Flag.js";
export declare class CommandHandler extends AkairoHandler {
aliases: Collection;
aliasReplacement?: RegExp;
allowMention: boolean | MentionPrefixPredicate;
argumentDefaults: ArgumentDefaults;
autoDefer: boolean;
autoRegisterSlashCommands: boolean;
blockBots: boolean;
blockClient: boolean;
commandUtil: boolean;
commandUtilLifetime: number;
commandUtils: Collection>;
commandUtilSweepInterval: number;
cooldowns: Collection;
defaultCooldown: number;
execSlash: boolean;
fetchMembers: boolean;
handleEdits: boolean;
ignoreCooldown: Snowflake | Snowflake[] | OmitThisParameter;
ignorePermissions: Snowflake | Snowflake[] | OmitThisParameter;
inhibitorHandler: InhibitorHandler | null;
prefix: string | string[] | PrefixSupplier;
prefixes: Collection>;
prompts: Collection>;
resolver: TypeResolver;
storeMessages: boolean;
typing: boolean;
skipBuiltInPostInhibitors: boolean;
constructor(client: AkairoClient, options: CommandHandlerOptions);
protected setup(): void;
protected registerInteractionCommands(): Promise;
private mapInteraction;
private sortInteraction;
register(command: Command, filepath?: string): void;
deregister(command: Command): void;
handle(message: Message): Promise;
handleSlash(interaction: ChatInputCommandInteraction): Promise;
handleAutocomplete(interaction: AutocompleteInteraction): void;
handleDirectCommand(message: Message, content: string, command: Command, ignore?: boolean): Promise;
handleRegexAndConditionalCommands(message: Message): Promise;
handleRegexCommands(message: Message): Promise;
handleConditionalCommands(message: Message): Promise;
runAllTypeInhibitors(message: Message | AkairoMessage, slash?: boolean): Promise;
runPreTypeInhibitors(message: Message | AkairoMessage): Promise;
runPostTypeInhibitors(message: Message | AkairoMessage, command: Command, slash?: boolean): Promise;
runPermissionChecks(message: Message | AkairoMessage, command: Command, slash?: boolean): Promise;
runCooldowns(message: Message | AkairoMessage, command: Command): boolean;
runCommand(message: Message, command: Command, args: any): Promise;
parseCommand(message: Message | AkairoMessage): Promise;
parseCommandOverwrittenPrefixes(message: Message | AkairoMessage): Promise;
parseMultiplePrefixes(message: Message | AkairoMessage, pairs: [string, Set | null][]): ParsedComponentData;
parseWithPrefix(message: Message | AkairoMessage, prefix: string, associatedCommands?: Set | null): ParsedComponentData;
emitError(err: Error, message: Message | AkairoMessage, command?: Command): void;
sweepCommandUtil(lifetime?: number): number;
addPrompt(channel: TextBasedChannel, user: User): void;
removePrompt(channel: TextBasedChannel, user: User): void;
hasPrompt(channel: TextBasedChannel, user: User): boolean;
findCommand(name: string): Command;
useInhibitorHandler(inhibitorHandler: InhibitorHandler): CommandHandler;
useListenerHandler(listenerHandler: ListenerHandler): CommandHandler;
useTaskHandler(taskHandler: TaskHandler): CommandHandler;
useContextMenuCommandHandler(contextMenuCommandHandler: ContextMenuCommandHandler): CommandHandler;
}
type Events = CommandHandlerEventsType;
export interface CommandHandler extends AkairoHandler {
on(event: K, listener: (...args: Events[K]) => Awaitable): this;
once(event: K, listener: (...args: Events[K]) => Awaitable): this;
}
export declare class RegisterInteractionCommandError extends Error {
original: DiscordAPIError;
type: "guild" | "global";
data: ApplicationCommandData[];
guild: Guild | null;
constructor(original: DiscordAPIError, type: "guild" | "global", data: ApplicationCommandData[], guild?: Guild | null);
}
export type MentionPrefixPredicate = (message: Message) => SyncOrAsync;
export declare const MentionPrefixPredicate: z.ZodFunction, z.ZodTypeDef, Message>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodPromise]>>;
export type IgnoreCheckPredicate = (this: Command | CommandHandler, message: Message | AkairoMessage, command: Command) => boolean;
export declare const IgnoreCheckPredicate: z.ZodFunction, z.ZodTypeDef, Message>, z.ZodType, z.ZodTypeDef, AkairoMessage>]>, z.ZodType], z.ZodUnknown>, z.ZodBoolean>;
export type PrefixSupplier = (this: Command | CommandHandler, message: Message) => SyncOrAsync>;
export declare const PrefixSupplier: z.ZodFunction, z.ZodTypeDef, Message>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodArray]>, z.ZodPromise]>>]>>;
export type CommandHandlerOptions = AkairoHandlerOptions & {
aliasReplacement?: RegExp;
allowMention?: boolean | MentionPrefixPredicate;
argumentDefaults?: DefaultArgumentOptions;
autoDefer?: boolean;
autoRegisterSlashCommands?: boolean;
blockBots?: boolean;
blockClient?: boolean;
commandUtil?: boolean;
commandUtilLifetime?: number;
commandUtilSweepInterval?: number;
defaultCooldown?: number;
fetchMembers?: boolean;
handleEdits?: boolean;
ignoreCooldown?: ArrayOrNot | IgnoreCheckPredicate;
ignorePermissions?: ArrayOrNot | IgnoreCheckPredicate;
prefix?: ArrayOrNot | PrefixSupplier;
storeMessages?: boolean;
typing?: boolean;
execSlash?: boolean;
skipBuiltInPostInhibitors?: boolean;
};
export declare const CommandHandlerOptions: z.ZodObject<{
directory: z.ZodString;
classToHandle: z.ZodAny;
extensions: z.ZodOptional, z.ZodSet]>>;
automateCategories: z.ZodOptional;
loadFilter: z.ZodOptional, z.ZodBoolean>>;
aliasReplacement: z.ZodOptional>;
allowMention: z.ZodOptional, z.ZodTypeDef, Message>], z.ZodUnknown>, z.ZodUnion<[z.ZodBoolean, z.ZodPromise]>>]>>;
argumentDefaults: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
otherwise: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>>;
prompt: z.ZodOptional;
cancel: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
retries: z.ZodNumber;
infinite: z.ZodBoolean;
message: z.ZodType, z.ZodTypeDef, Message>;
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>>;
cancelWord: z.ZodOptional;
ended: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
retries: z.ZodNumber;
infinite: z.ZodBoolean;
message: z.ZodType, z.ZodTypeDef, Message>;
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>>;
infinite: z.ZodOptional;
limit: z.ZodOptional;
modifyCancel: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
modifyEnded: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
modifyRetry: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
modifyStart: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
modifyTimeout: z.ZodOptional, z.ZodTypeDef, Message>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
failure: Flag | null;
phrase: string;
}, {
failure: Flag | null;
phrase: string;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>>;
optional: z.ZodOptional;
retries: z.ZodOptional;
retry: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
retries: z.ZodNumber;
infinite: z.ZodBoolean;
message: z.ZodType, z.ZodTypeDef, Message>;
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>>;
start: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
retries: z.ZodNumber;
infinite: z.ZodBoolean;
message: z.ZodType, z.ZodTypeDef, Message>;
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag>>;
}, "strip", z.ZodTypeAny, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}, {
message: Message;
failure: Flag | null;
phrase: string;
retries: number;
infinite: boolean;
}>], z.ZodUnknown>, z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodType, z.ZodRecord]>, z.ZodPromise, z.ZodRecord]>>]>>]>>;
stopWord: z.ZodOptional;
time: z.ZodOptional;
timeout: z.ZodOptional, z.ZodRecord]>, z.ZodFunction, z.ZodTypeDef, Message>, z.ZodObject<{
retries: z.ZodNumber;
infinite: z.ZodBoolean;
message: z.ZodType, z.ZodTypeDef, Message>;
phrase: z.ZodString;
failure: z.ZodNullable, z.ZodTypeDef, Flag