diff --git a/packages/builders/__tests__/components/button.test.ts b/packages/builders/__tests__/components/button.test.ts index 9302a1e4e6e3..fc0c86c2ab82 100644 --- a/packages/builders/__tests__/components/button.test.ts +++ b/packages/builders/__tests__/components/button.test.ts @@ -30,7 +30,7 @@ describe('Button Components', () => { button.toJSON(); }).not.toThrowError(); - expect(() => new LinkButtonBuilder().setURL('https://google.com')).not.toThrowError(); + expect(() => new LinkButtonBuilder().setLabel('label').setURL('https://google.com').toJSON()).not.toThrowError(); }); test('GIVEN invalid fields THEN build does throw', () => { @@ -61,6 +61,13 @@ describe('Button Components', () => { expect(() => new PrimaryButtonBuilder().setCustomId('hi').setDisabled(0).toJSON()).toThrowError(); // @ts-expect-error: Invalid emoji expect(() => new PrimaryButtonBuilder().setCustomId('hi').setEmoji('foo').toJSON()).toThrowError(); + + expect(() => + new LinkButtonBuilder() + .setLabel('label') + .setURL(`https://google.com/${'a'.repeat(512)}`) + .toJSON(), + ).toThrowError(); }); test('GiVEN valid input THEN valid JSON outputs are given', () => { diff --git a/packages/builders/src/components/Assertions.ts b/packages/builders/src/components/Assertions.ts index 07a2736e2889..f1da1607f78a 100644 --- a/packages/builders/src/components/Assertions.ts +++ b/packages/builders/src/components/Assertions.ts @@ -32,7 +32,7 @@ const buttonDangerPredicate = buttonCustomIdPredicateBase.extend({ style: z.lite const buttonLinkPredicate = buttonPredicateBase.extend({ style: z.literal(ButtonStyle.Link), - url: z.url({ protocol: /^(?:https?|discord)$/ }), + url: z.url({ protocol: /^(?:https?|discord)$/ }).max(512), emoji: emojiPredicate.optional(), label: labelPredicate, });