From 32f9056b15edede3bab07de96afb4b56d3a9ecca Mon Sep 17 00:00:00 2001 From: Tiemen Date: Sun, 17 Jul 2022 18:52:18 +0200 Subject: [PATCH] fix: slash command name regex (#8265) --- .../interactions/SlashCommands/SlashCommands.test.ts | 5 +++++ .../builders/src/interactions/slashCommands/Assertions.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/builders/__tests__/interactions/SlashCommands/SlashCommands.test.ts b/packages/builders/__tests__/interactions/SlashCommands/SlashCommands.test.ts index dc25a1ccf..9145af900 100644 --- a/packages/builders/__tests__/interactions/SlashCommands/SlashCommands.test.ts +++ b/packages/builders/__tests__/interactions/SlashCommands/SlashCommands.test.ts @@ -42,6 +42,8 @@ describe('Slash Commands', () => { describe('Assertions tests', () => { test('GIVEN valid name THEN does not throw error', () => { expect(() => SlashCommandAssertions.validateName('ping')).not.toThrowError(); + expect(() => SlashCommandAssertions.validateName('hello-world_command')).not.toThrowError(); + expect(() => SlashCommandAssertions.validateName('aˇ㐆1٢〣²अก')).not.toThrowError(); }); test('GIVEN invalid name THEN throw error', () => { @@ -51,7 +53,10 @@ describe('Slash Commands', () => { expect(() => SlashCommandAssertions.validateName('')).toThrowError(); // Invalid characters used + expect(() => SlashCommandAssertions.validateName('ABC')).toThrowError(); expect(() => SlashCommandAssertions.validateName('ABC123$%^&')).toThrowError(); + expect(() => SlashCommandAssertions.validateName('help ping')).toThrowError(); + expect(() => SlashCommandAssertions.validateName('🦦')).toThrowError(); // Too long of a name expect(() => diff --git a/packages/builders/src/interactions/slashCommands/Assertions.ts b/packages/builders/src/interactions/slashCommands/Assertions.ts index 39f38343f..27c8fc5ed 100644 --- a/packages/builders/src/interactions/slashCommands/Assertions.ts +++ b/packages/builders/src/interactions/slashCommands/Assertions.ts @@ -8,7 +8,7 @@ import { isValidationEnabled } from '../../util/validation'; const namePredicate = s.string .lengthGreaterThanOrEqual(1) .lengthLessThanOrEqual(32) - .regex(/^[\P{Lu}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u) + .regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u) .setValidationEnabled(isValidationEnabled); export function validateName(name: unknown): asserts name is string {