From 770e904c215842cd05dec62568c005a8cccb6611 Mon Sep 17 00:00:00 2001 From: h0tp <141889580+h0tp-ftw@users.noreply.github.com> Date: Sat, 7 Feb 2026 03:11:46 +0000 Subject: [PATCH] fix(discord): restrict activity types and statuses to valid enum values - Removed 'offline' from valid config statuses (use 'invisible'). - Restricted activityType to 0, 1, 2, 3, 5 (excluding custom/4). - Added logic to only send 'url' when activityType is 1 (Streaming). - Updated Typescript definitions and Zod schemas to match. --- src/config/types.discord.ts | 4 ++-- src/config/zod-schema.providers-core.ts | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/config/types.discord.ts b/src/config/types.discord.ts index ba65d1c8d1..f294217854 100644 --- a/src/config/types.discord.ts +++ b/src/config/types.discord.ts @@ -178,9 +178,9 @@ export type DiscordAccountConfig = { /** Bot activity status text (e.g. "Watching X"). */ activity?: string; /** Bot status (online|dnd|idle|invisible). Default: online. */ - status?: "online" | "dnd" | "idle" | "invisible" | "offline"; + status?: "online" | "dnd" | "idle" | "invisible"; /** Activity type (0=Game, 1=Streaming, 2=Listening, 3=Watching, 5=Competing). Default: 3 (Watching). */ - activityType?: number; + activityType?: 0 | 1 | 2 | 3 | 5; /** Streaming URL (Twitch/YouTube). Required if activityType=1. */ activityUrl?: string; }; diff --git a/src/config/zod-schema.providers-core.ts b/src/config/zod-schema.providers-core.ts index dfd2fb0ba3..f8c246cfbc 100644 --- a/src/config/zod-schema.providers-core.ts +++ b/src/config/zod-schema.providers-core.ts @@ -333,8 +333,10 @@ export const DiscordAccountSchema = z .optional(), responsePrefix: z.string().optional(), activity: z.string().optional(), - status: z.enum(["online", "dnd", "idle", "invisible", "offline"]).optional(), - activityType: z.number().int().min(0).max(5).optional(), + status: z.enum(["online", "dnd", "idle", "invisible"]).optional(), + activityType: z + .union([z.literal(0), z.literal(1), z.literal(2), z.literal(3), z.literal(5)]) + .optional(), activityUrl: z.string().optional(), }) .strict();