import type { Redis } from 'ioredis'; import { z } from 'zod'; const FUN_CONFIG_PREFIX = 'fun:config:'; export const FunConfigSchema = z.object({ enabled: z.boolean().default(true), mediaEnabled: z.boolean().default(true) }); export type FunConfig = z.infer; const DEFAULT_FUN_CONFIG: FunConfig = { enabled: true, mediaEnabled: true }; export async function getFunConfig(redis: Redis, guildId: string): Promise { const raw = await redis.get(`${FUN_CONFIG_PREFIX}${guildId}`); if (!raw) { return { ...DEFAULT_FUN_CONFIG }; } const parsed = FunConfigSchema.safeParse(JSON.parse(raw)); return parsed.success ? parsed.data : { ...DEFAULT_FUN_CONFIG }; } export async function setFunConfig(redis: Redis, guildId: string, config: FunConfig): Promise { await redis.set(`${FUN_CONFIG_PREFIX}${guildId}`, JSON.stringify(config)); }