Merge pull request #953 from NapNeko/fix-zod-boolean

fix: zod boolean强制转换
This commit is contained in:
手瓜一十雪
2025-04-17 09:56:48 +08:00
committed by GitHub
88 changed files with 376 additions and 331 deletions

14
src/common/coerce.ts Normal file
View File

@@ -0,0 +1,14 @@
import { z } from 'zod';
const boolean = () => z.preprocess(
val => typeof val === 'string' && (val.toLowerCase() === 'false' || val === '0') ? false : Boolean(val),
z.boolean()
);
const number = () => z.preprocess(
val => typeof val !== 'number' ? Number(val) : val,
z.number()
);
const string = () => z.preprocess(
val => typeof val !== 'string' ? String(val) : val,
z.string()
);
export const coerce = { boolean, number, string };

View File

@@ -1,15 +1,16 @@
import { ConfigBase } from '@/common/config-base';
import { NapCatCore } from '@/core';
import { coerce } from '@/common/coerce';
import { z } from 'zod';
export const NapcatConfigSchema = z.object({
fileLog: z.coerce.boolean().default(false),
consoleLog: z.coerce.boolean().default(true),
fileLogLevel: z.coerce.string().default('debug'),
consoleLogLevel: z.coerce.string().default('info'),
packetBackend: z.coerce.string().default('auto'),
packetServer: z.coerce.string().default(''),
o3HookMode: z.coerce.number().default(0),
fileLog: coerce.boolean().default(false),
consoleLog: coerce.boolean().default(true),
fileLogLevel: coerce.string().default('debug'),
consoleLogLevel: coerce.string().default('info'),
packetBackend: coerce.string().default('auto'),
packetServer: coerce.string().default(''),
o3HookMode: coerce.number().default(0),
});
export type NapcatConfig = z.infer<typeof NapcatConfigSchema>;

View File

@@ -1,13 +1,14 @@
import { ActionName } from '@/onebot/action/router';
import { OneBotAction } from '../OneBotAction';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
bot_appid: z.coerce.string(),
button_id: z.coerce.string().default(''),
callback_data: z.coerce.string().default(''),
msg_seq: z.coerce.string().default('10086'),
group_id: coerce.string(),
bot_appid: coerce.string(),
button_id: coerce.string().default(''),
callback_data: coerce.string().default(''),
msg_seq: coerce.string().default('10086'),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,10 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
rawData: z.coerce.string(),
brief: z.coerce.string(),
rawData: coerce.string(),
brief: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { z } from 'zod';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
count: z.coerce.number().default(48),
count: coerce.number().default(48),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,12 +3,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { type NTQQMsgApi } from '@/core/apis';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
emojiId: z.coerce.string(),
emojiType: z.coerce.string(),
count: z.coerce.number().default(20),
message_id: coerce.string(),
emojiId: coerce.string(),
emojiType: coerce.string(),
count: coerce.number().default(20),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,10 +2,10 @@ import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { AIVoiceChatType } from '@/core/packet/entities/aiChat';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
chat_type: z.coerce.number().default(1),
group_id: coerce.string(),
chat_type: coerce.number().default(1),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,10 +2,10 @@ import { type NTQQCollectionApi } from '@/core/apis/collection';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
category: z.coerce.number(),
count: z.coerce.number().default(1),
category: coerce.number(),
count: coerce.number().default(1),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,8 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,34 +3,34 @@ import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { MiniAppInfo, MiniAppInfoHelper } from '@/core/packet/utils/helper/miniAppHelper';
import { MiniAppData, MiniAppRawData, MiniAppReqCustomParams, MiniAppReqParams } from '@/core/packet/entities/miniApp';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.union([
z.object({
type: z.union([z.literal('bili'), z.literal('weibo')]),
title: z.coerce.string(),
desc: z.coerce.string(),
picUrl: z.coerce.string(),
jumpUrl: z.coerce.string(),
webUrl: z.coerce.string().optional(),
rawArkData: z.coerce.string().optional()
title: coerce.string(),
desc: coerce.string(),
picUrl: coerce.string(),
jumpUrl: coerce.string(),
webUrl: coerce.string().optional(),
rawArkData: coerce.string().optional()
}),
z.object({
title: z.coerce.string(),
desc: z.coerce.string(),
picUrl: z.coerce.string(),
jumpUrl: z.coerce.string(),
iconUrl: z.coerce.string(),
webUrl: z.coerce.string().optional(),
appId: z.coerce.string(),
scene: z.union([z.coerce.number(), z.coerce.string()]),
templateType: z.union([z.coerce.number(), z.coerce.string()]),
businessType: z.union([z.coerce.number(), z.coerce.string()]),
verType: z.union([z.coerce.number(), z.coerce.string()]),
shareType: z.union([z.coerce.number(), z.coerce.string()]),
versionId: z.coerce.string(),
sdkId: z.coerce.string(),
withShareTicket: z.union([z.coerce.number(), z.coerce.string()]),
rawArkData: z.coerce.string().optional()
title: coerce.string(),
desc: coerce.string(),
picUrl: coerce.string(),
jumpUrl: coerce.string(),
iconUrl: coerce.string(),
webUrl: coerce.string().optional(),
appId: coerce.string(),
scene: z.union([coerce.number(), coerce.string()]),
templateType: z.union([coerce.number(), coerce.string()]),
businessType: z.union([coerce.number(), coerce.string()]),
verType: z.union([coerce.number(), coerce.string()]),
shareType: z.union([coerce.number(), coerce.string()]),
versionId: coerce.string(),
sdkId: coerce.string(),
withShareTicket: z.union([coerce.number(), coerce.string()]),
rawArkData: coerce.string().optional()
})
]);
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { NTVoteInfo } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string().optional(),
start: z.coerce.number().default(0),
count: z.coerce.number().default(10),
user_id: coerce.string().optional(),
start: coerce.number().default(0),
count: coerce.number().default(10),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.number(),
user_id: coerce.number(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,12 +2,12 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_id: z.coerce.string(),
current_parent_directory: z.coerce.string(),
target_parent_directory: z.coerce.string(),
group_id: coerce.string(),
file_id: coerce.string(),
current_parent_directory: coerce.string(),
target_parent_directory: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,9 +4,9 @@ import { checkFileExist, uriToLocalFile } from '@/common/file';
import fs from 'fs';
import { z } from 'zod';
import { GeneralCallResultStatus } from '@/core';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
image: z.coerce.string(),
image: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,12 +2,12 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_id: z.coerce.string(),
current_parent_directory: z.coerce.string(),
new_name: z.coerce.string(),
group_id: coerce.string(),
file_id: coerce.string(),
current_parent_directory: coerce.string(),
new_name: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,12 @@ import { PacketHexStr } from '@/core/packet/transformer/base';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
cmd: z.coerce.string(),
data: z.coerce.string(),
rsp: z.coerce.boolean().default(true),
cmd: coerce.string(),
data: coerce.string(),
rsp: coerce.boolean().default(true),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
face_id: z.coerce.string(),// 参考 face_config.json 的 QSid
face_type: z.coerce.string().default('1'),
wording: z.coerce.string().default(' '),
face_id: coerce.string(),// 参考 face_config.json 的 QSid
face_type: coerce.string().default('1'),
wording: coerce.string().default(' '),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,10 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
remark: z.coerce.string(),
group_id: coerce.string(),
remark: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,10 +2,10 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { ChatType } from '@/core';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string(),
event_type: z.coerce.number(),
user_id: coerce.string(),
event_type: coerce.number(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
longNick: z.coerce.string(),
longNick: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
status: z.coerce.number(),
ext_status: z.coerce.number(),
battery_status: z.coerce.number(),
status: coerce.number(),
ext_status: coerce.number(),
battery_status: coerce.number(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,9 +3,9 @@ import { ActionName } from '@/onebot/action/router';
import fs from 'node:fs/promises';
import { checkFileExist, uriToLocalFile } from '@/common/file';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
file: z.coerce.string(),
file: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,11 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
special_title: z.coerce.string().default(''),
group_id: coerce.string(),
user_id: coerce.string(),
special_title: coerce.string().default(''),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { GeneralCallResult } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string().optional(),
group_id: z.coerce.string().optional(),
phoneNumber: z.coerce.string().default(''),
user_id: coerce.string().optional(),
group_id: coerce.string().optional(),
phoneNumber: coerce.string().default(''),
});
type Payload = z.infer<typeof SchemaData>;
@@ -29,7 +29,7 @@ export class SharePeer extends OneBotAction<Payload, GeneralCallResult & {
}
const SchemaDataGroupEx = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type PayloadGroupEx = z.infer<typeof SchemaDataGroupEx>;

View File

@@ -2,10 +2,10 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_id: z.coerce.string(),
group_id: coerce.string(),
file_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
words: z.array(z.coerce.string()),
words: z.array(coerce.string()),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,7 +4,7 @@ import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { ActionName } from '@/onebot/action/router';
import { OB11MessageImage, OB11MessageVideo } from '@/onebot/types';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
export interface GetFileResponse {
file?: string; // path
url?: string;
@@ -14,8 +14,8 @@ export interface GetFileResponse {
}
const GetFileBase_PayloadSchema = z.object({
file: z.coerce.string().optional(),
file_id: z.coerce.string().optional(),
file: coerce.string().optional(),
file_id: coerce.string().optional(),
});

View File

@@ -2,10 +2,10 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_id: z.coerce.string(),
group_id: coerce.string(),
file_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,9 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
file_id: z.coerce.string(),
file_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,10 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
folder_name: z.coerce.string(),
group_id: coerce.string(),
folder_name: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,10 +4,10 @@ import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { z } from 'zod';
import { NTQQGroupApi } from '@/core/apis';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_id: z.coerce.string(),
group_id: coerce.string(),
file_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { ActionName } from '@/onebot/action/router';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { z } from 'zod';
import { NTQQGroupApi } from '@/core/apis';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
folder_id: z.coerce.string().optional(),
folder: z.coerce.string().optional(),
group_id: coerce.string(),
folder_id: coerce.string().optional(),
folder: coerce.string().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,16 +5,16 @@ import { join as joinPath } from 'node:path';
import { calculateFileMD5, uriToLocalFile } from '@/common/file';
import { randomUUID } from 'crypto';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
interface FileResponse {
file: string;
}
const SchemaData = z.object({
url: z.coerce.string().optional(),
base64: z.coerce.string().optional(),
name: z.coerce.string().optional(),
headers: z.union([z.coerce.string(), z.array(z.coerce.string())]).optional(),
url: coerce.string().optional(),
base64: coerce.string().optional(),
name: coerce.string().optional(),
headers: z.union([coerce.string(), z.array(coerce.string())]).optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,10 +5,10 @@ import { MessageUnique } from '@/common/message-unique';
import { ChatType, ElementType, MsgSourceType, NTMsgType, RawMessage } from '@/core';
import { z } from 'zod';
import { isNumeric } from '@/common/helper';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string().optional(),
id: z.coerce.string().optional(),
message_id: coerce.string().optional(),
id: coerce.string().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,15 +5,16 @@ import { ChatType } from '@/core/types';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { NetworkAdapterConfig } from '@/onebot/config/config';
import { coerce } from '@/common/coerce';
interface Response {
messages: OB11Message[];
}
const SchemaData = z.object({
user_id: z.coerce.string(),
message_seq: z.coerce.string().optional(),
count: z.coerce.number().default(20),
reverseOrder: z.coerce.boolean().default(false)
user_id: coerce.string(),
message_seq: coerce.string().optional(),
count: coerce.number().default(20),
reverseOrder: coerce.boolean().default(false)
});

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string()
group_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string()
group_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,12 +3,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { OB11Construct } from '@/onebot/helper/data';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
folder_id: z.coerce.string().optional(),
folder: z.coerce.string().optional(),
file_count: z.coerce.number().default(50),
group_id: coerce.string(),
folder_id: coerce.string().optional(),
folder: coerce.string().optional(),
file_count: coerce.number().default(50),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,9 @@ import { WebHonorType } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
type: z.nativeEnum(WebHonorType).optional()
});

View File

@@ -5,16 +5,17 @@ import { ChatType, Peer } from '@/core/types';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { NetworkAdapterConfig } from '@/onebot/config/config';
import { coerce } from '@/common/coerce';
interface Response {
messages: OB11Message[];
}
const SchemaData = z.object({
group_id: z.coerce.string(),
message_seq: z.coerce.string().optional(),
count: z.coerce.number().default(20),
reverseOrder: z.coerce.boolean().default(false)
group_id: coerce.string(),
message_seq: coerce.string().optional(),
count: coerce.number().default(20),
reverseOrder: coerce.boolean().default(false)
});

View File

@@ -4,10 +4,10 @@ import { ActionName } from '@/onebot/action/router';
import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot';
import { OB11Construct } from '@/onebot/helper/data';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file_count: z.coerce.number().default(50),
group_id: coerce.string(),
file_count: coerce.number().default(50),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,10 +4,11 @@ import { OB11Construct } from '@/onebot/helper/data';
import { ActionName } from '@/onebot/action/router';
import { calcQQLevel } from '@/common/helper';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string(),
no_cache: z.coerce.boolean().default(false),
user_id: coerce.string(),
no_cache: coerce.boolean().default(false),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
url: z.coerce.string(),
url: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,12 +1,13 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
friend_id: z.coerce.string().optional(),
user_id: z.coerce.string().optional(),
temp_block: z.coerce.boolean().optional(),
temp_both_del: z.coerce.boolean().optional(),
friend_id: coerce.string().optional(),
user_id: coerce.string().optional(),
temp_block: coerce.boolean().optional(),
temp_both_del: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,9 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
model: z.coerce.string(),
model: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,16 +3,16 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { unlink } from 'node:fs/promises';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
content: z.coerce.string(),
image: z.coerce.string().optional(),
pinned: z.coerce.number().default(0),
type: z.coerce.number().default(1),
confirm_required: z.coerce.number().default(1),
is_show_edit_card: z.coerce.number().default(0),
tip_window_type: z.coerce.number().default(0),
group_id: coerce.string(),
content: coerce.string(),
image: coerce.string().optional(),
pinned: coerce.number().default(0),
type: coerce.number().default(1),
confirm_required: coerce.number().default(1),
is_show_edit_card: coerce.number().default(0),
tip_window_type: coerce.number().default(0),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,9 +4,10 @@ import { checkFileExistV2, uriToLocalFile } from '@/common/file';
import { z } from 'zod';
import fs from 'node:fs/promises';
import { GeneralCallResult } from '@/core';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
file: z.coerce.string(),
group_id: z.coerce.string()
file: coerce.string(),
group_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { NTQQUserApi } from '@/core/apis';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
nickname: z.coerce.string(),
personal_note: z.coerce.string().optional(),
sex: z.coerce.string().optional(), // 传Sex值建议传0
nickname: coerce.string(),
personal_note: coerce.string().optional(),
sex: coerce.string().optional(), // 传Sex值建议传0
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,13 +5,13 @@ import fs from 'fs';
import { uriToLocalFile } from '@/common/file';
import { SendMessageContext } from '@/onebot/api';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
file: z.coerce.string(),
name: z.coerce.string(),
folder: z.coerce.string().optional(),
folder_id: z.coerce.string().optional(),//临时扩展
group_id: coerce.string(),
file: coerce.string(),
name: coerce.string(),
folder: coerce.string().optional(),
folder_id: coerce.string().optional(),//临时扩展
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -6,11 +6,11 @@ import { uriToLocalFile } from '@/common/file';
import { SendMessageContext } from '@/onebot/api';
import { ContextMode, createContext } from '@/onebot/action/msg/SendMsg';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string(),
file: z.coerce.string(),
name: z.coerce.string(),
user_id: coerce.string(),
file: coerce.string(),
name: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,9 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
message_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,10 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
notice_id: z.coerce.string()
group_id: coerce.string(),
notice_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { AIVoiceChatType } from '@/core/packet/entities/aiChat';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
character: z.coerce.string(),
group_id: z.coerce.string(),
text: z.coerce.string(),
character: coerce.string(),
group_id: coerce.string(),
text: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,9 +5,9 @@ import { MessageUnique } from '@/common/message-unique';
import crypto from 'crypto';
import { z } from 'zod';
import { NetworkAdapterConfig } from '@/onebot/config/config';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,9 +3,9 @@ import { OB11Construct } from '@/onebot/helper/data';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,9 +3,10 @@ import { OB11Construct } from '@/onebot/helper/data';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
no_cache: z.coerce.boolean().default(false),
no_cache: coerce.boolean().default(false),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,11 +3,12 @@ import { OB11Construct } from '@/onebot/helper/data';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
no_cache: z.coerce.boolean().default(false),
group_id: coerce.string(),
user_id: coerce.string(),
no_cache: coerce.boolean().default(false),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -4,10 +4,11 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { GroupMember } from '@/core';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
no_cache: z.coerce.boolean().default(false)
group_id: coerce.string(),
no_cache: coerce.boolean().default(false)
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,6 +2,7 @@ import { WebApiGroupNoticeFeed } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
interface GroupNotice {
sender_id: number;
publish_time: number;
@@ -17,7 +18,7 @@ interface GroupNotice {
}
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,9 @@ import { ShutUpGroupMember } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,10 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
group_id: coerce.string(),
user_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,11 @@ import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { AIVoiceChatType } from '@/core/packet/entities/aiChat';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
character: z.coerce.string(),
group_id: z.coerce.string(),
text: z.coerce.string(),
character: coerce.string(),
group_id: coerce.string(),
text: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,9 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
message_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { NTGroupRequestOperateTypes } from '@/core/types';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
flag: z.coerce.string(),
approve: z.coerce.boolean().default(true),
reason: z.coerce.string().nullable().default(' '),
flag: coerce.string(),
approve: coerce.boolean().default(true),
reason: coerce.string().nullable().default(' '),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { NTGroupMemberRole } from '@/core/types';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
enable: z.coerce.boolean().default(false),
group_id: coerce.string(),
user_id: coerce.string(),
enable: coerce.boolean().default(false),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
duration: z.coerce.number().default(0),
group_id: coerce.string(),
user_id: coerce.string(),
duration: coerce.number().default(0),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
card: z.coerce.string().optional(),
group_id: coerce.string(),
user_id: coerce.string(),
card: coerce.string().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,12 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
user_id: z.coerce.string(),
reject_add_request: z.coerce.boolean().optional(),
group_id: coerce.string(),
user_id: coerce.string(),
reject_add_request: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
is_dismiss: z.coerce.boolean().optional(),
group_id: coerce.string(),
is_dismiss: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,10 +2,10 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
group_name: z.coerce.string(),
group_id: coerce.string(),
group_name: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string(),
enable: z.coerce.boolean().optional(),
group_id: coerce.string(),
enable: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -2,9 +2,10 @@ import { ActionName } from '@/onebot/action/router';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
message_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,11 +3,11 @@ import { ChatType, Peer } from '@/core/types';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
group_id: z.coerce.string().optional(),
user_id: z.coerce.string().optional(),
message_id: coerce.string(),
group_id: coerce.string().optional(),
user_id: coerce.string().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -5,11 +5,11 @@ import { MessageUnique } from '@/common/message-unique';
import { RawMessage } from '@/core';
import { z } from 'zod';
import { NetworkAdapterConfig } from '@/onebot/config/config';
import { coerce } from '@/common/coerce';
export type ReturnDataType = OB11Message
const SchemaData = z.object({
message_id: z.coerce.string(),
message_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,11 +3,11 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string().optional(),
group_id: z.coerce.string().optional(),
message_id: z.coerce.string().optional(),
user_id: coerce.string().optional(),
group_id: coerce.string().optional(),
message_id: coerce.string().optional(),
});
type PlayloadType = z.infer<typeof SchemaData>;

View File

@@ -2,11 +2,12 @@ import { ActionName } from '@/onebot/action/router';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { MessageUnique } from '@/common/message-unique';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
message_id: z.coerce.string(),
emoji_id: z.coerce.string(),
set: z.coerce.boolean().optional(),
message_id: coerce.string(),
emoji_id: coerce.string(),
set: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,11 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
group_id: z.coerce.string().optional(),
user_id: z.coerce.string(),
group_id: coerce.string().optional(),
user_id: coerce.string(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,6 +1,7 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
interface Response {
cookies: string,
@@ -8,7 +9,7 @@ interface Response {
}
const SchemaData = z.object({
domain: z.coerce.string()
domain: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,9 +1,10 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
user_id: z.coerce.string()
user_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,13 +1,14 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
interface Response {
cookies: string,
bkn: string
}
const SchemaData = z.object({
domain: z.coerce.string()
domain: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,9 +3,10 @@ import { OB11Construct } from '@/onebot/helper/data';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
no_cache: z.coerce.boolean().optional(),
no_cache: coerce.boolean().optional(),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -3,9 +3,10 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { NetworkAdapterConfig } from '@/onebot/config/config';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
count: z.coerce.number().default(10),
count: coerce.number().default(10),
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,10 +1,11 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
times: z.coerce.number().default(1),
user_id: z.coerce.string()
times: coerce.number().default(1),
user_id: coerce.string()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,11 +1,12 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
const SchemaData = z.object({
flag: z.coerce.string(),
approve: z.coerce.boolean().default(true),
remark: z.coerce.string().nullable().optional()
flag: coerce.string(),
approve: coerce.boolean().default(true),
remark: coerce.string().nullable().optional()
});
type Payload = z.infer<typeof SchemaData>;

View File

@@ -1,71 +1,72 @@
import { z } from 'zod';
import { coerce } from '../../common/coerce';
const HttpServerConfigSchema = z.object({
name: z.coerce.string().default('http-server'),
enable: z.coerce.boolean().default(false),
port: z.coerce.number().default(3000),
host: z.coerce.string().default('0.0.0.0'),
enableCors: z.coerce.boolean().default(true),
enableWebsocket: z.coerce.boolean().default(true),
messagePostFormat: z.coerce.string().default('array'),
token: z.coerce.string().default(''),
debug: z.coerce.boolean().default(false)
name: coerce.string().default('http-server'),
enable: coerce.boolean().default(false),
port: coerce.number().default(3000),
host: coerce.string().default('0.0.0.0'),
enableCors: coerce.boolean().default(true),
enableWebsocket: coerce.boolean().default(true),
messagePostFormat: coerce.string().default('array'),
token: coerce.string().default(''),
debug: coerce.boolean().default(false)
});
const HttpSseServerConfigSchema = z.object({
name: z.coerce.string().default('http-sse-server'),
enable: z.coerce.boolean().default(false),
port: z.coerce.number().default(3000),
host: z.coerce.string().default('0.0.0.0'),
enableCors: z.coerce.boolean().default(true),
enableWebsocket: z.coerce.boolean().default(true),
messagePostFormat: z.coerce.string().default('array'),
token: z.coerce.string().default(''),
debug: z.coerce.boolean().default(false),
reportSelfMessage: z.coerce.boolean().default(false)
name: coerce.string().default('http-sse-server'),
enable: coerce.boolean().default(false),
port: coerce.number().default(3000),
host: coerce.string().default('0.0.0.0'),
enableCors: coerce.boolean().default(true),
enableWebsocket: coerce.boolean().default(true),
messagePostFormat: coerce.string().default('array'),
token: coerce.string().default(''),
debug: coerce.boolean().default(false),
reportSelfMessage: coerce.boolean().default(false)
});
const HttpClientConfigSchema = z.object({
name: z.coerce.string().default('http-client'),
enable: z.coerce.boolean().default(false),
url: z.coerce.string().default('http://localhost:8080'),
messagePostFormat: z.coerce.string().default('array'),
reportSelfMessage: z.coerce.boolean().default(false),
token: z.coerce.string().default(''),
debug: z.coerce.boolean().default(false)
name: coerce.string().default('http-client'),
enable: coerce.boolean().default(false),
url: coerce.string().default('http://localhost:8080'),
messagePostFormat: coerce.string().default('array'),
reportSelfMessage: coerce.boolean().default(false),
token: coerce.string().default(''),
debug: coerce.boolean().default(false)
});
const WebsocketServerConfigSchema = z.object({
name: z.coerce.string().default('websocket-server'),
enable: z.coerce.boolean().default(false),
host: z.coerce.string().default('0.0.0.0'),
port: z.coerce.number().default(3001),
messagePostFormat: z.coerce.string().default('array'),
reportSelfMessage: z.coerce.boolean().default(false),
token: z.coerce.string().default(''),
enableForcePushEvent: z.coerce.boolean().default(true),
debug: z.coerce.boolean().default(false),
heartInterval: z.coerce.number().default(30000)
name: coerce.string().default('websocket-server'),
enable: coerce.boolean().default(false),
host: coerce.string().default('0.0.0.0'),
port: coerce.number().default(3001),
messagePostFormat: coerce.string().default('array'),
reportSelfMessage: coerce.boolean().default(false),
token: coerce.string().default(''),
enableForcePushEvent: coerce.boolean().default(true),
debug: coerce.boolean().default(false),
heartInterval: coerce.number().default(30000)
});
const WebsocketClientConfigSchema = z.object({
name: z.coerce.string().default('websocket-client'),
enable: z.coerce.boolean().default(false),
url: z.coerce.string().default('ws://localhost:8082'),
messagePostFormat: z.coerce.string().default('array'),
reportSelfMessage: z.coerce.boolean().default(false),
reconnectInterval: z.coerce.number().default(5000),
token: z.coerce.string().default(''),
debug: z.coerce.boolean().default(false),
heartInterval: z.coerce.number().default(30000)
name: coerce.string().default('websocket-client'),
enable: coerce.boolean().default(false),
url: coerce.string().default('ws://localhost:8082'),
messagePostFormat: coerce.string().default('array'),
reportSelfMessage: coerce.boolean().default(false),
reconnectInterval: coerce.number().default(5000),
token: coerce.string().default(''),
debug: coerce.boolean().default(false),
heartInterval: coerce.number().default(30000)
});
const PluginConfigSchema = z.object({
name: z.coerce.string().default('plugin'),
enable: z.coerce.boolean().default(false),
messagePostFormat: z.coerce.string().default('array'),
reportSelfMessage: z.coerce.boolean().default(false),
debug: z.coerce.boolean().default(false),
name: coerce.string().default('plugin'),
enable: coerce.boolean().default(false),
messagePostFormat: coerce.string().default('array'),
reportSelfMessage: coerce.boolean().default(false),
debug: coerce.boolean().default(false),
});
const NetworkConfigSchema = z.object({
@@ -79,9 +80,9 @@ const NetworkConfigSchema = z.object({
export const OneBotConfigSchema = z.object({
network: NetworkConfigSchema,
musicSignUrl: z.coerce.string().default(''),
enableLocalFile2Url: z.coerce.boolean().default(false),
parseMultMsg: z.coerce.boolean().default(false)
musicSignUrl: coerce.string().default(''),
enableLocalFile2Url: coerce.boolean().default(false),
parseMultMsg: coerce.boolean().default(false)
});
export type OneBotConfig = z.infer<typeof OneBotConfigSchema>;

View File

@@ -4,13 +4,14 @@ import { resolve } from 'node:path';
import { deepMerge } from '../utils/object';
import { themeType } from '../types/theme';
import { z } from 'zod';
import { coerce } from '@/common/coerce';
// 定义配置的类型
const WebUiConfigSchema = z.object({
host: z.coerce.string().default('0.0.0.0'),
port: z.coerce.number().default(6099),
token: z.coerce.string().default('napcat'),
loginRate: z.coerce.number().default(10),
autoLoginAccount: z.coerce.string().default(''),
host: coerce.string().default('0.0.0.0'),
port: coerce.number().default(6099),
token: coerce.string().default('napcat'),
loginRate: coerce.number().default(10),
autoLoginAccount: coerce.string().default(''),
theme: themeType,
});

View File

@@ -1,9 +1,10 @@
import { coerce } from '@/common/coerce';
import { z } from 'zod';
export const themeType = z.object(
{
dark: z.record(z.coerce.string(), z.coerce.string()),
light: z.record(z.coerce.string(), z.coerce.string()),
dark: z.record(coerce.string(), coerce.string()),
light: z.record(coerce.string(), coerce.string()),
}
).default({
dark: {