mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 10:41:37 +00:00
Config: require Discord ID strings (#18220)
This commit is contained in:
@@ -25,6 +25,13 @@ import { sensitive } from "./zod-schema.sensitive.js";
|
||||
|
||||
const ToolPolicyBySenderSchema = z.record(z.string(), ToolPolicySchema).optional();
|
||||
|
||||
const DiscordIdSchema = z
|
||||
.union([z.string(), z.number()])
|
||||
.refine((value) => typeof value === "string", {
|
||||
message: "Discord IDs must be strings (wrap numeric IDs in quotes).",
|
||||
});
|
||||
const DiscordIdListSchema = z.array(DiscordIdSchema);
|
||||
|
||||
const TelegramInlineButtonsScopeSchema = z.enum(["off", "dm", "group", "all", "allowlist"]);
|
||||
|
||||
const TelegramCapabilitiesSchema = z.union([
|
||||
@@ -214,9 +221,9 @@ export const DiscordDmSchema = z
|
||||
.object({
|
||||
enabled: z.boolean().optional(),
|
||||
policy: DmPolicySchema.optional(),
|
||||
allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
allowFrom: DiscordIdListSchema.optional(),
|
||||
groupEnabled: z.boolean().optional(),
|
||||
groupChannels: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
groupChannels: DiscordIdListSchema.optional(),
|
||||
})
|
||||
.strict();
|
||||
|
||||
@@ -228,8 +235,8 @@ export const DiscordGuildChannelSchema = z
|
||||
toolsBySender: ToolPolicyBySenderSchema,
|
||||
skills: z.array(z.string()).optional(),
|
||||
enabled: z.boolean().optional(),
|
||||
users: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
roles: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
users: DiscordIdListSchema.optional(),
|
||||
roles: DiscordIdListSchema.optional(),
|
||||
systemPrompt: z.string().optional(),
|
||||
includeThreadStarter: z.boolean().optional(),
|
||||
autoThread: z.boolean().optional(),
|
||||
@@ -243,8 +250,8 @@ export const DiscordGuildSchema = z
|
||||
tools: ToolPolicySchema,
|
||||
toolsBySender: ToolPolicyBySenderSchema,
|
||||
reactionNotifications: z.enum(["off", "own", "all", "allowlist"]).optional(),
|
||||
users: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
roles: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
users: DiscordIdListSchema.optional(),
|
||||
roles: DiscordIdListSchema.optional(),
|
||||
channels: z.record(z.string(), DiscordGuildChannelSchema.optional()).optional(),
|
||||
})
|
||||
.strict();
|
||||
@@ -311,14 +318,14 @@ export const DiscordAccountSchema = z
|
||||
// Aliases for channels.discord.dm.policy / channels.discord.dm.allowFrom. Prefer these for
|
||||
// inheritance in multi-account setups (shallow merge works; nested dm object doesn't).
|
||||
dmPolicy: DmPolicySchema.optional(),
|
||||
allowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
allowFrom: DiscordIdListSchema.optional(),
|
||||
dm: DiscordDmSchema.optional(),
|
||||
guilds: z.record(z.string(), DiscordGuildSchema.optional()).optional(),
|
||||
heartbeat: ChannelHeartbeatVisibilitySchema,
|
||||
execApprovals: z
|
||||
.object({
|
||||
enabled: z.boolean().optional(),
|
||||
approvers: z.array(z.union([z.string(), z.number()])).optional(),
|
||||
approvers: DiscordIdListSchema.optional(),
|
||||
agentFilter: z.array(z.string()).optional(),
|
||||
sessionFilter: z.array(z.string()).optional(),
|
||||
cleanupAfterResolve: z.boolean().optional(),
|
||||
|
||||
Reference in New Issue
Block a user