import type { Client, Message } from "@fluxerjs/core"; import type { ArgSchema, ParsedArgs } from "@/args"; export type { ParsedArgs }; /** Injected into every command's execute() call by the registry. */ export interface BotContext { client: Client; } export interface ICommand> { /** * Declare your arg schema here. The registry reads this to parse and * validate raw string args before calling execute(). * * Entries can be: * - Our built-in helpers: arg.string(), arg.number(), arg.boolean(), arg.rest() * - Any Standard Schema compatible schema (Zod, Valibot, ArkType, etc.) — required by default * - arg.optional(zodSchema) — to make an external schema optional * * Omit entirely for commands that take no args. */ readonly args?: TArgs; execute(ctx: BotContext, message: Message, args: ParsedArgs): Promise; } export type CommandCtor = new () => ICommand;