From d10a22424e4497485973dddba536d17603a754b8 Mon Sep 17 00:00:00 2001 From: Jaron Date: Mon, 27 Oct 2025 10:31:24 -0500 Subject: [PATCH] command manager hooked up to client --- rewrite/commandManager.ts | 8 ++++---- rewrite/index.ts | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/rewrite/commandManager.ts b/rewrite/commandManager.ts index 049b7fd..8412202 100644 --- a/rewrite/commandManager.ts +++ b/rewrite/commandManager.ts @@ -2,6 +2,7 @@ import type { ArgumentTypeFromOptions, Unicord, UnicordArgumentDefinition, + UnicordCommandHandler, UnicordCommandOptions, UnicordEventContext, UnicordHandler, @@ -64,7 +65,7 @@ export class UnicordCommandManager { register( type: UnicordEventType.ChatCommands | UnicordEventType.ApplicationCommands, event: string, - handler: UnicordHandler, + handler: UnicordCommandHandler, options: Options = { args: [] } as unknown as Options, ) { if (this.handlers[type].has(event) === false) { @@ -74,15 +75,14 @@ export class UnicordCommandManager { this.handlers[type].get(event)!.push({ options, handler }); // Generate a closure to wrap the handler - const wrappedHandler = async (context: UnicordCommandContext | UnicordEventContext, args: any[]) => { + const wrappedHandler = (async (context: UnicordCommandContext, args: any[]) => { console.log('Raw Args:', args); console.log('options:', options.args); const resolvedArgs = await this.validateAndResolveArgs(args, options.args); console.log('Resolved Args:', resolvedArgs); // TODO: Fix context type here - // @ts-expect-error will fix later return handler(context, resolvedArgs); - }; + }) as UnicordCommandHandler; this.eventProcessor.register(`${type}:${event}`, wrappedHandler); return this.self; diff --git a/rewrite/index.ts b/rewrite/index.ts index 8004762..b504a31 100644 --- a/rewrite/index.ts +++ b/rewrite/index.ts @@ -6,6 +6,7 @@ import { UnicordEventProcessor } from './eventProcessor'; import { UnicordGatewayManager } from './gatewayManager'; import { hydrate } from './hydrator'; import type { + UnicordCommandHandler, UnicordCommandOptions, UnicordConfig, UnicordConfigWithDefaults, @@ -78,14 +79,21 @@ export class Unicord { this.eventProcessor.emit(`${type}:${event}`, context, args); } - // TODO: type signature from registerChatCommand needs to transfer to here - get registerChatCommand() { - return this.commandManager.registerChatCommand; + // TODO: can we automate defining these methods with some TS magic? + registerChatCommand( + event: string, + handler: UnicordCommandHandler, + options: Options = { args: [] } as unknown as Options, + ) { + return this.commandManager.registerChatCommand(event, handler, options); } - // TODO: type signature from registerApplicationCommand needs to transfer to here - get registerApplicationCommand() { - return this.commandManager.registerApplicationCommand; + registerApplicationCommand( + event: string, + handler: UnicordCommandHandler, + options: Options = { args: [] } as unknown as Options, + ) { + return this.commandManager.registerApplicationCommand(event, handler, options); } // TODO: should have a different signature for events that are not commands