mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-20 05:23:31 +01:00
fix: Validate select menu options (#7566)
* fix: validate select menu options * chore: make requested changes * refactor: make requested changes * fix: tests
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { APIMessageComponentEmoji, ButtonStyle } from 'discord-api-types/v10';
|
||||
import { z } from 'zod';
|
||||
import type { SelectMenuOptionBuilder } from './selectMenu/SelectMenuOption';
|
||||
import { UnsafeSelectMenuOptionBuilder } from './selectMenu/UnsafeSelectMenuOption';
|
||||
|
||||
export const customIdValidator = z.string().min(1).max(100);
|
||||
|
||||
@@ -22,7 +23,19 @@ export const buttonStyleValidator = z.number().int().min(ButtonStyle.Primary).ma
|
||||
export const placeholderValidator = z.string().max(150);
|
||||
export const minMaxValidator = z.number().int().min(0).max(25);
|
||||
|
||||
export const optionsValidator = z.object({}).array().nonempty();
|
||||
export const labelValueDescriptionValidator = z.string().min(1).max(100);
|
||||
export const optionValidator = z.union([
|
||||
z.object({
|
||||
label: labelValueDescriptionValidator,
|
||||
value: labelValueDescriptionValidator,
|
||||
description: labelValueDescriptionValidator.optional(),
|
||||
emoji: emojiValidator.optional(),
|
||||
default: z.boolean().optional(),
|
||||
}),
|
||||
z.instanceof(UnsafeSelectMenuOptionBuilder),
|
||||
]);
|
||||
export const optionsValidator = optionValidator.array().nonempty();
|
||||
export const optionsLengthValidator = z.number().int().min(0).max(25);
|
||||
|
||||
export function validateRequiredSelectMenuParameters(options: SelectMenuOptionBuilder[], customId?: string) {
|
||||
customIdValidator.parse(customId);
|
||||
|
||||
Reference in New Issue
Block a user