From a9a2d2df425b27b4d93fced6a196ff1843522da0 Mon Sep 17 00:00:00 2001 From: yhx-12243 Date: Thu, 25 Apr 2024 01:09:16 -0400 Subject: [PATCH 1/5] fix(discord): subcommand parse --- adapters/discord/src/utils.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index 80b647a3..ac759140 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -345,14 +345,27 @@ export const encodeCommand = (cmd: Universal.Command): Discord.ApplicationComman options: encodeCommandOptions(cmd), }) -const decodeArgv = (data: Discord.InteractionData.ApplicationCommand, command: Universal.Command) => { - const result = { name: data.name, arguments: [], options: {} } as Universal.Argv +const decodeArgv = ( + data: Discord.InteractionData.ApplicationCommand | Discord.InteractionData.ApplicationCommand.Option, + command: Universal.Command, +) => { + const result = { name: command.name, arguments: [], options: {} } as Universal.Argv + const options = data.options + if (!options) return result + const dataChild = options[0] + if (dataChild && ( + dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND || + dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND_GROUP + )) { + const commandChild = command.children.find(cmd => cmd.name.endsWith('.' + dataChild.name)); + return commandChild ? decodeArgv(dataChild, commandChild) : result; + } for (const argument of command.arguments) { - const value = data.options?.find(opt => opt.name === argument.name)?.value + const value = options.find(opt => opt.name === argument.name)?.value if (value !== undefined) result.arguments.push(value) } for (const option of command.options) { - const value = data.options?.find(opt => opt.name === option.name)?.value + const value = options.find(opt => opt.name === option.name)?.value if (value !== undefined) result.options[option.name] = value } return result From d528e25f8da209694d4f5098065b5ac39608258a Mon Sep 17 00:00:00 2001 From: yhx-12243 Date: Thu, 25 Apr 2024 10:42:20 -0400 Subject: [PATCH 2/5] style(discord): make code format consistent --- adapters/discord/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index ac759140..8d206150 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -357,8 +357,8 @@ const decodeArgv = ( dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND || dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND_GROUP )) { - const commandChild = command.children.find(cmd => cmd.name.endsWith('.' + dataChild.name)); - return commandChild ? decodeArgv(dataChild, commandChild) : result; + const commandChild = command.children.find(cmd => cmd.name.endsWith('.' + dataChild.name)) + return commandChild ? decodeArgv(dataChild, commandChild) : result } for (const argument of command.arguments) { const value = options.find(opt => opt.name === argument.name)?.value From 489b375ce3a27bb08fa9314b227de68cd07e7ed3 Mon Sep 17 00:00:00 2001 From: yhx-12243 Date: Thu, 25 Apr 2024 22:22:18 -0400 Subject: [PATCH 3/5] fix(discord): child command description --- adapters/discord/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index 8d206150..39718860 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -380,8 +380,8 @@ export function encodeCommandOptions(cmd: Universal.Command): Discord.Applicatio ? Discord.ApplicationCommand.OptionType.SUB_COMMAND_GROUP : Discord.ApplicationCommand.OptionType.SUB_COMMAND, options: encodeCommandOptions(child), - description: cmd.description[''] || child.name, - description_localizations: pick(cmd.description, Discord.Locale), + description: child.description[''] || child.name, + description_localizations: pick(child.description, Discord.Locale), }))) } else { for (const arg of cmd.arguments) { From c46514d31d794b2283c3b1bf8518df30fae0f491 Mon Sep 17 00:00:00 2001 From: yhx-12243 Date: Sun, 9 Jun 2024 18:02:07 -0400 Subject: [PATCH 4/5] fix(discord): command match use lowercase --- adapters/discord/src/utils.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index 39718860..92511771 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -361,11 +361,13 @@ const decodeArgv = ( return commandChild ? decodeArgv(dataChild, commandChild) : result } for (const argument of command.arguments) { - const value = options.find(opt => opt.name === argument.name)?.value + const name = argument.name.toLowerCase() + const value = options.find(opt => opt.name === name)?.value if (value !== undefined) result.arguments.push(value) } for (const option of command.options) { - const value = options.find(opt => opt.name === option.name)?.value + const name = option.name.toLowerCase() + const value = options.find(opt => opt.name === name)?.value if (value !== undefined) result.options[option.name] = value } return result From 18099ad31d4df38e95139ea1fdaec3b668bd4153 Mon Sep 17 00:00:00 2001 From: Shigma Date: Tue, 18 Jun 2024 02:10:11 +0800 Subject: [PATCH 5/5] Apply suggestions from code review --- adapters/discord/src/utils.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index 92511771..10fd416a 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -354,8 +354,9 @@ const decodeArgv = ( if (!options) return result const dataChild = options[0] if (dataChild && ( - dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND || - dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND_GROUP + // eslint-disable-next-line operator-linebreak + dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND || + dataChild.type === Discord.ApplicationCommand.OptionType.SUB_COMMAND_GROUP )) { const commandChild = command.children.find(cmd => cmd.name.endsWith('.' + dataChild.name)) return commandChild ? decodeArgv(dataChild, commandChild) : result