Discord: add reusable component option

This commit is contained in:
Shadow
2026-02-16 14:22:31 -06:00
parent fc60336c18
commit 05a83b9e97
6 changed files with 112 additions and 14 deletions

View File

@@ -129,17 +129,28 @@ const discordComponentModalSchema = Type.Object({
fields: Type.Array(discordComponentModalFieldSchema),
});
const discordComponentMessageSchema = Type.Object({
text: Type.Optional(Type.String()),
container: Type.Optional(
Type.Object({
accentColor: Type.Optional(Type.String()),
spoiler: Type.Optional(Type.Boolean()),
}),
),
blocks: Type.Optional(Type.Array(discordComponentBlockSchema)),
modal: Type.Optional(discordComponentModalSchema),
});
const discordComponentMessageSchema = Type.Object(
{
text: Type.Optional(Type.String()),
reusable: Type.Optional(
Type.Boolean({
description: "Allow components to be used multiple times until they expire.",
}),
),
container: Type.Optional(
Type.Object({
accentColor: Type.Optional(Type.String()),
spoiler: Type.Optional(Type.Boolean()),
}),
),
blocks: Type.Optional(Type.Array(discordComponentBlockSchema)),
modal: Type.Optional(discordComponentModalSchema),
},
{
description:
"Discord components v2 payload. Set reusable=true to keep buttons, selects, and forms active until expiry.",
},
);
function buildSendSchema(options: {
includeButtons: boolean;