迁移类型校验到zod

This commit is contained in:
手瓜一十雪
2025-04-13 20:05:11 +08:00
parent d4ab191f34
commit 2147c4ffee
101 changed files with 951 additions and 945 deletions

View File

@@ -1,16 +1,15 @@
import { ActionName } from '@/onebot/action/router';
import { OneBotAction } from '../OneBotAction';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
bot_appid: Type.String(),
button_id: Type.String({ default: '' }),
callback_data: Type.String({ default: '' }),
msg_seq: Type.String({ default: '10086' }),
const SchemaData = z.object({
group_id: z.string(),
bot_appid: z.string(),
button_id: z.string().default(''),
callback_data: z.string().default(''),
msg_seq: z.string().default('10086'),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class ClickInlineKeyboardButton extends OneBotAction<Payload, unknown> {
override actionName = ActionName.ClickInlineKeyboardButton;
@@ -25,6 +24,6 @@ export class ClickInlineKeyboardButton extends OneBotAction<Payload, unknown> {
callback_data: payload.callback_data,
dmFlag: 0,
chatType: 2
})
});
}
}

View File

@@ -1,13 +1,13 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
rawData: Type.String(),
brief: Type.String(),
const SchemaData = z.object({
rawData: z.string(),
brief: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class CreateCollection extends OneBotAction<Payload, unknown> {
override actionName = ActionName.CreateCollection;

View File

@@ -1,12 +1,12 @@
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
const SchemaData = Type.Object({
count: Type.Union([Type.Number(), Type.String()], { default: 48 }),
const SchemaData = z.object({
count: z.number().default(48),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class FetchCustomFace extends OneBotAction<Payload, string[]> {
override actionName = ActionName.FetchCustomFace;

View File

@@ -1,17 +1,17 @@
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { MessageUnique } from '@/common/message-unique';
import { type NTQQMsgApi } from '@/core/apis';
const SchemaData = Type.Object({
message_id: Type.Union([Type.Number(), Type.String()]),
emojiId: Type.Union([Type.Number(), Type.String()]),
emojiType: Type.Union([Type.Number(), Type.String()]),
count: Type.Union([Type.Number(), Type.String()], { default: 20 }),
const SchemaData = z.object({
message_id: z.string(),
emojiId: z.string(),
emojiType: z.string(),
count: z.number().default(20),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class FetchEmojiLike extends OneBotAction<Payload, Awaited<ReturnType<NTQQMsgApi['getMsgEmojiLikesList']>>> {
override actionName = ActionName.FetchEmojiLike;
@@ -23,7 +23,7 @@ export class FetchEmojiLike extends OneBotAction<Payload, Awaited<ReturnType<NTQ
const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(msgIdPeer.Peer, [msgIdPeer.MsgId])).msgList[0];
if (!msg) throw new Error('消息不存在');
return await this.core.apis.MsgApi.getMsgEmojiLikesList(
msgIdPeer.Peer, msg.msgSeq, payload.emojiId.toString(), payload.emojiType.toString(), +payload.count
msgIdPeer.Peer, msg.msgSeq, payload.emojiId, payload.emojiType, +payload.count
);
}
}

View File

@@ -1,14 +1,14 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { AIVoiceChatType } from '@/core/packet/entities/aiChat';
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
chat_type: Type.Union([Type.Union([Type.Number(), Type.String()])], { default: 1 }),
const SchemaData = z.object({
group_id: z.string(),
chat_type: z.number().default(1),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
interface GetAiCharactersResponse {
type: string;

View File

@@ -1,14 +1,14 @@
import { type NTQQCollectionApi } from '@/core/apis/collection';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
category: Type.Union([Type.Number(), Type.String()]),
count: Type.Union([Type.Union([Type.Number(), Type.String()])], { default: 1 }),
const SchemaData = z.object({
category: z.number(),
count: z.number().default(1),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class GetCollectionList extends OneBotAction<Payload, Awaited<ReturnType<NTQQCollectionApi['getAllCollection']>>> {
override actionName = ActionName.GetCollectionList;

View File

@@ -1,17 +1,17 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Type, Static } from '@sinclair/typebox';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
import { z } from 'zod';
const SchemaData = z.object({
group_id: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class GetGroupInfoEx extends OneBotAction<Payload, unknown> {
override actionName = ActionName.GetGroupInfoEx;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
return (await this.core.apis.GroupApi.getGroupExtFE0Info([payload.group_id.toString()])).result.groupExtInfos.get(payload.group_id.toString());
return (await this.core.apis.GroupApi.getGroupExtFE0Info([payload.group_id])).result.groupExtInfos.get(payload.group_id);
}
}

View File

@@ -2,38 +2,38 @@ import { ActionName } from '@/onebot/action/router';
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 { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Union([
Type.Object({
type: Type.Union([Type.Literal('bili'), Type.Literal('weibo')]),
title: Type.String(),
desc: Type.String(),
picUrl: Type.String(),
jumpUrl: Type.String(),
webUrl: Type.Optional(Type.String()),
rawArkData: Type.Optional(Type.Union([Type.String()]))
const SchemaData = z.union([
z.object({
type: z.union([z.literal('bili'), z.literal('weibo')]),
title: z.string(),
desc: z.string(),
picUrl: z.string(),
jumpUrl: z.string(),
webUrl: z.string().optional(),
rawArkData: z.string().optional()
}),
Type.Object({
title: Type.String(),
desc: Type.String(),
picUrl: Type.String(),
jumpUrl: Type.String(),
iconUrl: Type.String(),
webUrl: Type.Optional(Type.String()),
appId: Type.String(),
scene: Type.Union([Type.Number(), Type.String()]),
templateType: Type.Union([Type.Number(), Type.String()]),
businessType: Type.Union([Type.Number(), Type.String()]),
verType: Type.Union([Type.Number(), Type.String()]),
shareType: Type.Union([Type.Number(), Type.String()]),
versionId: Type.String(),
sdkId: Type.String(),
withShareTicket: Type.Union([Type.Number(), Type.String()]),
rawArkData: Type.Optional(Type.Union([Type.String()]))
z.object({
title: z.string(),
desc: z.string(),
picUrl: z.string(),
jumpUrl: z.string(),
iconUrl: z.string(),
webUrl: z.string().optional(),
appId: z.string(),
scene: z.union([z.number(), z.string()]),
templateType: z.union([z.number(), z.string()]),
businessType: z.union([z.number(), z.string()]),
verType: z.union([z.number(), z.string()]),
shareType: z.union([z.number(), z.string()]),
versionId: z.string(),
sdkId: z.string(),
withShareTicket: z.union([z.number(), z.string()]),
rawArkData: z.string().optional()
})
]);
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class GetMiniAppArk extends GetPacketStatusDepends<Payload, {
data: MiniAppData | MiniAppRawData

View File

@@ -1,15 +1,15 @@
import { NTVoteInfo } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Type, Static } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])),
start: Type.Union([Type.Number(), Type.String()], { default: 0 }),
count: Type.Union([Type.Number(), Type.String()], { default: 10 })
const SchemaData = z.object({
user_id: z.string().optional(),
start: z.number().default(0),
count: z.number().default(10),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class GetProfileLike extends OneBotAction<Payload, {
uid: string;

View File

@@ -36,7 +36,7 @@ export class GetUnidirectionalFriendList extends OneBotAction<void, Friend[]> {
uint64_uin: self_id,
uint64_top: 0,
uint32_req_num: 99,
bytes_cookies: ""
bytes_cookies: ''
};
const packed_data = await this.pack_data(JSON.stringify(req_json));
const data = Buffer.from(packed_data).toString('hex');

View File

@@ -1,18 +1,18 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
user_id: Type.Union([Type.Number(), Type.String()]),
const SchemaData = z.object({
user_id: z.number(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class GetUserStatus extends GetPacketStatusDepends<Payload, { status: number; ext_status: number; } | undefined> {
override actionName = ActionName.GetUserStatus;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
return await this.core.apis.PacketApi.pkt.operation.GetStrangerStatus(+payload.user_id);
return await this.core.apis.PacketApi.pkt.operation.GetStrangerStatus(payload.user_id);
}
}

View File

@@ -1,16 +1,16 @@
import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
file_id: Type.String(),
current_parent_directory: Type.String(),
target_parent_directory: Type.String(),
const SchemaData = z.object({
group_id: z.union([z.number(), z.string()]),
file_id: z.string(),
current_parent_directory: z.string(),
target_parent_directory: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
interface MoveGroupFileResponse {
ok: boolean;

View File

@@ -2,14 +2,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { checkFileExist, uriToLocalFile } from '@/common/file';
import fs from 'fs';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
import { GeneralCallResultStatus } from '@/core';
const SchemaData = Type.Object({
image: Type.String(),
const SchemaData = z.object({
image: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
class OCRImageBase extends OneBotAction<Payload, GeneralCallResultStatus> {
override payloadSchema = SchemaData;

View File

@@ -1,16 +1,16 @@
import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
file_id: Type.String(),
current_parent_directory: Type.String(),
new_name: Type.String(),
const SchemaData = z.object({
group_id: z.union([z.number(), z.string()]),
file_id: z.string(),
current_parent_directory: z.string(),
new_name: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
interface RenameGroupFileResponse {
ok: boolean;

View File

@@ -1,22 +1,21 @@
import { PacketHexStr } from '@/core/packet/transformer/base';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
cmd: Type.String(),
data: Type.String(),
rsp: Type.Union([Type.String(), Type.Boolean()], { default: true }),
const SchemaData = z.object({
cmd: z.string(),
data: z.string(),
rsp: z.boolean().default(true),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SendPacket extends GetPacketStatusDepends<Payload, string | undefined> {
override payloadSchema = SchemaData;
override actionName = ActionName.SendPacket;
async _handle(payload: Payload) {
const rsp = typeof payload.rsp === 'boolean' ? payload.rsp : payload.rsp === 'true';
const data = await this.core.apis.PacketApi.pkt.operation.sendPacket({ cmd: payload.cmd, data: payload.data as PacketHexStr }, rsp);
const data = await this.core.apis.PacketApi.pkt.operation.sendPacket({ cmd: payload.cmd, data: payload.data as PacketHexStr }, payload.rsp);
return typeof data === 'object' ? data.toString('hex') : undefined;
}
}

View File

@@ -1,14 +1,14 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
face_id: Type.Union([Type.Number(), Type.String()]),// 参考 face_config.json 的 QSid
face_type: Type.Union([Type.Number(), Type.String()], { default: '1' }),
wording: Type.String({ default: ' ' }),
const SchemaData = z.object({
face_id: z.union([z.number(), z.string()]),// 参考 face_config.json 的 QSid
face_type: z.union([z.number(), z.string()]).default('1'),
wording: z.string().default(' '),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SetDiyOnlineStatus extends OneBotAction<Payload, string> {
override actionName = ActionName.SetDiyOnlineStatus;

View File

@@ -1,13 +1,13 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.String(),
remark: Type.String(),
const SchemaData = z.object({
group_id: z.string(),
remark: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export default class SetGroupRemark extends OneBotAction<Payload, null> {
override actionName = ActionName.SetGroupRemark;

View File

@@ -1,12 +1,12 @@
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
const SchemaData = z.object({
group_id: z.union([z.number(), z.string()]),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
class SetGroupSignBase extends GetPacketStatusDepends<Payload, void> {
override payloadSchema = SchemaData;

View File

@@ -1,14 +1,14 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { ChatType } from '@/core';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
user_id: Type.Union([Type.Number(), Type.String()]),
event_type: Type.Number(),
const SchemaData = z.object({
user_id: z.union([z.number(), z.string()]),
event_type: z.number(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SetInputStatus extends OneBotAction<Payload, unknown> {
override actionName = ActionName.SetInputStatus;

View File

@@ -1,12 +1,12 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
longNick: Type.String(),
const SchemaData = z.object({
longNick: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SetLongNick extends OneBotAction<Payload, unknown> {
override actionName = ActionName.SetLongNick;

View File

@@ -1,14 +1,14 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
status: Type.Union([Type.Number(), Type.String()]),
ext_status: Type.Union([Type.Number(), Type.String()]),
battery_status: Type.Union([Type.Number(), Type.String()]),
const SchemaData = z.object({
status: z.union([z.number(), z.string()]),
ext_status: z.union([z.number(), z.string()]),
battery_status: z.union([z.number(), z.string()]),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SetOnlineStatus extends OneBotAction<Payload, null> {
override actionName = ActionName.SetOnlineStatus;

View File

@@ -2,13 +2,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import fs from 'node:fs/promises';
import { checkFileExist, uriToLocalFile } from '@/common/file';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
file: Type.String(),
const SchemaData = z.object({
file: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export default class SetAvatar extends OneBotAction<Payload, null> {
override actionName = ActionName.SetQQAvatar;

View File

@@ -1,14 +1,14 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
user_id: Type.Union([Type.Number(), Type.String()]),
special_title: Type.String({ default: '' }),
const SchemaData = z.object({
group_id: z.union([z.number(), z.string()]),
user_id: z.union([z.number(), z.string()]),
special_title: z.string({ default: '' }),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SetSpecialTitle extends GetPacketStatusDepends<Payload, void> {
override actionName = ActionName.SetSpecialTitle;

View File

@@ -1,15 +1,15 @@
import { GeneralCallResult } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])),
group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])),
phoneNumber: Type.String({ default: '' }),
const SchemaData = z.object({
user_id: z.union([z.number(), z.string()]).optional(),
group_id: z.union([z.number(), z.string()]).optional(),
phoneNumber: z.string().default(''),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class SharePeer extends OneBotAction<Payload, GeneralCallResult & {
arkMsg?: string;
@@ -28,11 +28,11 @@ export class SharePeer extends OneBotAction<Payload, GeneralCallResult & {
}
}
const SchemaDataGroupEx = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
const SchemaDataGroupEx = z.object({
group_id: z.union([z.number(), z.string()]),
});
type PayloadGroupEx = Static<typeof SchemaDataGroupEx>;
type PayloadGroupEx = z.infer<typeof SchemaDataGroupEx>;
export class ShareGroupEx extends OneBotAction<PayloadGroupEx, string> {
override actionName = ActionName.ShareGroupEx;

View File

@@ -1,14 +1,14 @@
import { ActionName } from '@/onebot/action/router';
import { FileNapCatOneBotUUID } from '@/common/file-uuid';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
group_id: Type.Union([Type.Number(), Type.String()]),
file_id: Type.String(),
const SchemaData = z.object({
group_id: z.union([z.number(), z.string()]),
file_id: z.string(),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
interface TransGroupFileResponse {
ok: boolean;

View File

@@ -1,12 +1,12 @@
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
import { z } from 'zod';
const SchemaData = Type.Object({
words: Type.Array(Type.String()),
const SchemaData = z.object({
words: Type.Array(z.string()),
});
type Payload = Static<typeof SchemaData>;
type Payload = z.infer<typeof SchemaData>;
export class TranslateEnWordToZn extends OneBotAction<Payload, Array<unknown> | null> {
override actionName = ActionName.TranslateEnWordToZn;