From 0d7a00c9d07ed77992957b57d1988d7530bd9b76 Mon Sep 17 00:00:00 2001 From: didinele Date: Tue, 4 Mar 2025 12:18:57 +0200 Subject: [PATCH 1/5] fix(ContextMenuCommandBuilder): allow emoji in name --- .../__tests__/interactions/ContextMenuCommands.test.ts | 3 +++ .../src/interactions/commands/contextMenu/Assertions.ts | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts b/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts index 72df8eba020b..d2e398317d4d 100644 --- a/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts +++ b/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts @@ -27,6 +27,9 @@ describe('Context Menu Commands', () => { // Translation: thx (according to GTranslate) expect(() => getBuilder().setName('どうも')).not.toThrowError(); + + expect(() => getBuilder().setName('🎉').toJSON()).not.toThrowError(); + expect(() => getBuilder().setName('🎉 abc').toJSON()).not.toThrowError(); }); }); diff --git a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts index 16a8d8039ed9..c6966fd3a6fa 100644 --- a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts +++ b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts @@ -6,8 +6,10 @@ const namePredicate = z .string() .min(1) .max(32) - // eslint-disable-next-line prefer-named-capture-group - .regex(/^( *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}]+ *)+$/u); + .regex( + // eslint-disable-next-line prefer-named-capture-group + /^((( *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}])|((\p{Extended_Pictographic}|\p{Emoji_Component})+))+ *)+$/u, + ); const contextsPredicate = z.array(z.nativeEnum(InteractionContextType)); const integrationTypesPredicate = z.array(z.nativeEnum(ApplicationIntegrationType)); From 823eb0d77698d35269f964fe0ee85f3ed97a998c Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Tue, 4 Mar 2025 10:24:41 +0000 Subject: [PATCH 2/5] test: add emoji from 16.0 https://emojipedia.org/fingerprint --- .../builders/__tests__/interactions/ContextMenuCommands.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts b/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts index d2e398317d4d..4d5da29221a7 100644 --- a/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts +++ b/packages/builders/__tests__/interactions/ContextMenuCommands.test.ts @@ -29,7 +29,9 @@ describe('Context Menu Commands', () => { expect(() => getBuilder().setName('どうも')).not.toThrowError(); expect(() => getBuilder().setName('🎉').toJSON()).not.toThrowError(); + expect(() => getBuilder().setName('🫆').toJSON()).not.toThrowError(); expect(() => getBuilder().setName('🎉 abc').toJSON()).not.toThrowError(); + expect(() => getBuilder().setName('🫆 abc').toJSON()).not.toThrowError(); }); }); From df41fd40c97d4bd0f7cd48e142637d674516dae0 Mon Sep 17 00:00:00 2001 From: didinele Date: Tue, 4 Mar 2025 13:09:34 +0200 Subject: [PATCH 3/5] chore: non rule-breaking regex --- .../src/interactions/commands/contextMenu/Assertions.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts index c6966fd3a6fa..cb2c7553ffd0 100644 --- a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts +++ b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts @@ -7,8 +7,7 @@ const namePredicate = z .min(1) .max(32) .regex( - // eslint-disable-next-line prefer-named-capture-group - /^((( *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}])|((\p{Extended_Pictographic}|\p{Emoji_Component})+))+ *)+$/u, + /^(?:(?:(?: *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}])|(?:(?:\p{Extended_Pictographic}|\p{Emoji_Component})+))+ *)+$/u, ); const contextsPredicate = z.array(z.nativeEnum(InteractionContextType)); From 1d20087ad605f4399aeec0b6a591abee90625043 Mon Sep 17 00:00:00 2001 From: Denis-Adrian Cristea Date: Wed, 5 Mar 2025 14:07:27 +0200 Subject: [PATCH 4/5] feat: use simplified regex Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com> --- .../src/interactions/commands/contextMenu/Assertions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts index cb2c7553ffd0..1a32b6c141e3 100644 --- a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts +++ b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts @@ -7,7 +7,7 @@ const namePredicate = z .min(1) .max(32) .regex( - /^(?:(?:(?: *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}])|(?:(?:\p{Extended_Pictographic}|\p{Emoji_Component})+))+ *)+$/u, + /^(?:(?: *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}\p{Extended_Pictographic}\p{Emoji_Component}]) *)+$/u, ); const contextsPredicate = z.array(z.nativeEnum(InteractionContextType)); From d8404257a3f362cd16deb9026bc2500a53e4fafd Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Wed, 5 Mar 2025 12:12:57 +0000 Subject: [PATCH 5/5] style: prettier --- .../src/interactions/commands/contextMenu/Assertions.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts index 1a32b6c141e3..909a994e7dd9 100644 --- a/packages/builders/src/interactions/commands/contextMenu/Assertions.ts +++ b/packages/builders/src/interactions/commands/contextMenu/Assertions.ts @@ -6,9 +6,7 @@ const namePredicate = z .string() .min(1) .max(32) - .regex( - /^(?:(?: *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}\p{Extended_Pictographic}\p{Emoji_Component}]) *)+$/u, - ); + .regex(/^(?:(?: *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}\p{Extended_Pictographic}\p{Emoji_Component}]) *)+$/u); const contextsPredicate = z.array(z.nativeEnum(InteractionContextType)); const integrationTypesPredicate = z.array(z.nativeEnum(ApplicationIntegrationType));