diff --git a/apps/website/docs/api-reference/commandkit/classes/app-command-handler.mdx b/apps/website/docs/api-reference/commandkit/classes/app-command-handler.mdx
index fbf55db7..dcc28760 100644
--- a/apps/website/docs/api-reference/commandkit/classes/app-command-handler.mdx
+++ b/apps/website/docs/api-reference/commandkit/classes/app-command-handler.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## AppCommandHandler
-
+
Handles application commands for CommandKit, including loading, registration, and execution.
Manages both slash commands and message commands with middleware support.
@@ -29,6 +29,7 @@ class AppCommandHandler {
getCommandsArray() => ;
registerCommandHandler() => ;
prepareCommandRun(source: Interaction | Message, cmdName?: string) => Promise;
+ resolveMessageCommandName(name: string) => string;
reloadCommands() => ;
addExternalMiddleware(data: Middleware[]) => ;
addExternalCommands(data: Command[]) => ;
@@ -86,6 +87,11 @@ Registers event handlers for Discord interactions and messages.
Promise<PreparedAppCommandExecution | null>`} />
Prepares a command for execution by resolving the command and its middleware.
+### resolveMessageCommandName
+
+ string`} />
+
+
### reloadCommands
`} />
diff --git a/apps/website/docs/api-reference/commandkit/classes/middleware-context.mdx b/apps/website/docs/api-reference/commandkit/classes/middleware-context.mdx
index 07244d0f..049b8051 100644
--- a/apps/website/docs/api-reference/commandkit/classes/middleware-context.mdx
+++ b/apps/website/docs/api-reference/commandkit/classes/middleware-context.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## MiddlewareContext
-
+
Extended context class for middleware execution with additional control methods.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/app-command-native.mdx b/apps/website/docs/api-reference/commandkit/interfaces/app-command-native.mdx
index a5dfdb22..c8eae3ff 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/app-command-native.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/app-command-native.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## AppCommandNative
-
+
Represents a native command structure used in CommandKit.
This structure includes the command definition and various handlers for different interaction types.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/custom-app-command-props.mdx b/apps/website/docs/api-reference/commandkit/interfaces/custom-app-command-props.mdx
index 2988eb4d..4bd185dc 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/custom-app-command-props.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/custom-app-command-props.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CustomAppCommandProps
-
+
Custom properties that can be added to an AppCommand.
This allows for additional metadata or configuration to be associated with a command.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/loaded-command.mdx b/apps/website/docs/api-reference/commandkit/interfaces/loaded-command.mdx
index 588d84f6..3b844ba3 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/loaded-command.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/loaded-command.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## LoadedCommand
-
+
Represents a loaded command with its metadata and configuration.
diff --git a/apps/website/docs/api-reference/commandkit/interfaces/prepared-app-command-execution.mdx b/apps/website/docs/api-reference/commandkit/interfaces/prepared-app-command-execution.mdx
index 09437062..d431b84e 100644
--- a/apps/website/docs/api-reference/commandkit/interfaces/prepared-app-command-execution.mdx
+++ b/apps/website/docs/api-reference/commandkit/interfaces/prepared-app-command-execution.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## PreparedAppCommandExecution
-
+
Represents a prepared command execution with all necessary data and middleware.
diff --git a/apps/website/docs/api-reference/commandkit/types/app-command.mdx b/apps/website/docs/api-reference/commandkit/types/app-command.mdx
index e8419046..dcd53aa5 100644
--- a/apps/website/docs/api-reference/commandkit/types/app-command.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/app-command.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## AppCommand
-
+
Represents a command in the CommandKit application, including its metadata and handlers.
This type extends the native command structure with additional properties.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-builder-like.mdx b/apps/website/docs/api-reference/commandkit/types/command-builder-like.mdx
index 8cac8a10..e1d584a5 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-builder-like.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-builder-like.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandBuilderLike
-
+
Type representing command builder objects supported by CommandKit.
diff --git a/apps/website/docs/api-reference/commandkit/types/command-type-data.mdx b/apps/website/docs/api-reference/commandkit/types/command-type-data.mdx
index 8159f8d9..d82ef3cb 100644
--- a/apps/website/docs/api-reference/commandkit/types/command-type-data.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/command-type-data.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## CommandTypeData
-
+
Type representing command data identifier.
diff --git a/apps/website/docs/api-reference/commandkit/types/resolvable-command.mdx b/apps/website/docs/api-reference/commandkit/types/resolvable-command.mdx
index 339edf48..c82f05d0 100644
--- a/apps/website/docs/api-reference/commandkit/types/resolvable-command.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/resolvable-command.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## ResolvableCommand
-
+
Type for commands that can be resolved by the handler.
diff --git a/apps/website/docs/api-reference/commandkit/types/run-command.mdx b/apps/website/docs/api-reference/commandkit/types/run-command.mdx
index a2387bd1..73142a16 100644
--- a/apps/website/docs/api-reference/commandkit/types/run-command.mdx
+++ b/apps/website/docs/api-reference/commandkit/types/run-command.mdx
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
## RunCommand
-
+
Function type for wrapping command execution with custom logic.
diff --git a/packages/commandkit/src/app/commands/Context.ts b/packages/commandkit/src/app/commands/Context.ts
index 375d5b50..1e3614b8 100644
--- a/packages/commandkit/src/app/commands/Context.ts
+++ b/packages/commandkit/src/app/commands/Context.ts
@@ -302,9 +302,10 @@ export class Context<
public get commandName(): string {
if (this.isInteraction()) {
return this.interaction.commandName;
- } else {
- return this.config.messageCommandParser!.getCommand();
}
+
+ const maybeAlias = this.config.messageCommandParser!.getCommand();
+ return this.commandkit.commandHandler.resolveMessageCommandName(maybeAlias);
}
/**
diff --git a/packages/commandkit/src/app/handlers/AppCommandHandler.ts b/packages/commandkit/src/app/handlers/AppCommandHandler.ts
index e1da4d1b..a23a25c3 100644
--- a/packages/commandkit/src/app/handlers/AppCommandHandler.ts
+++ b/packages/commandkit/src/app/handlers/AppCommandHandler.ts
@@ -1,5 +1,4 @@
import {
- ApplicationCommandType,
AutocompleteInteraction,
Awaitable,
Collection,
@@ -648,6 +647,22 @@ export class AppCommandHandler {
return null;
}
+ public resolveMessageCommandName(name: string): string {
+ for (const [, loadedCommand] of this.loadedCommands) {
+ if (loadedCommand.data.command.name === name) {
+ return loadedCommand.data.command.name;
+ }
+
+ const aliases = loadedCommand.data.metadata?.aliases;
+
+ if (aliases && Array.isArray(aliases) && aliases.includes(name)) {
+ return loadedCommand.data.command.name;
+ }
+ }
+
+ return name;
+ }
+
/**
* Reloads all commands and middleware from scratch.
*/