From e562a5771355a98ad82ce887107e4a0239183660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 25 Jan 2026 16:26:27 +0800 Subject: [PATCH] Refactor type definitions and payload schemas in actions Standardized type usage and improved type safety across multiple OneBot action files. Updated payload schemas to use string types for IDs and flags, refined return types, and enhanced message content typing. Added error handling for missing parameters in SetGroupTodo. --- .../action/extends/GetGroupAddRequest.ts | 2 +- .../action/extends/GetQunAlbumList.ts | 8 +++++--- .../extends/GetUnidirectionalFriendList.ts | 8 +++++++- .../action/go-cqhttp/SendForwardMsg.ts | 10 ++++++---- .../action/group/GetGroupEssence.ts | 16 +++++++++------- .../action/group/SetGroupAddRequest.ts | 2 +- .../napcat-onebot/action/packet/SetGroupTodo.ts | 7 +++++-- .../action/user/SetFriendAddRequest.ts | 2 +- .../napcat-onebot/action/user/SetFriendRemark.ts | 2 +- 9 files changed, 36 insertions(+), 21 deletions(-) diff --git a/packages/napcat-onebot/action/extends/GetGroupAddRequest.ts b/packages/napcat-onebot/action/extends/GetGroupAddRequest.ts index ff6bef3a..7e2b429e 100644 --- a/packages/napcat-onebot/action/extends/GetGroupAddRequest.ts +++ b/packages/napcat-onebot/action/extends/GetGroupAddRequest.ts @@ -29,7 +29,7 @@ export default class GetGroupAddRequest extends OneBotAction { const NTQQUserApi = this.core.apis.UserApi; const NTQQGroupApi = this.core.apis.GroupApi; const ignoredNotifies = await NTQQGroupApi.getSingleScreenNotifies(true, 10); - const retData: any[] = []; + const retData: ReturnType = []; const notifyPromises = ignoredNotifies .filter(notify => notify.type === 7) diff --git a/packages/napcat-onebot/action/extends/GetQunAlbumList.ts b/packages/napcat-onebot/action/extends/GetQunAlbumList.ts index 74fe4ffd..3c30bf15 100644 --- a/packages/napcat-onebot/action/extends/GetQunAlbumList.ts +++ b/packages/napcat-onebot/action/extends/GetQunAlbumList.ts @@ -1,6 +1,8 @@ import { OneBotAction } from '@/napcat-onebot/action/OneBotAction'; import { ActionName } from '@/napcat-onebot/action/router'; import { Static, Type } from '@sinclair/typebox'; +import { NTQQWebApi } from 'napcat-core/apis'; + const PayloadSchema = Type.Object({ group_id: Type.String({ description: '群号' }), }); @@ -9,14 +11,14 @@ type PayloadType = Static; const ReturnSchema = Type.Array(Type.Any(), { description: '群相册列表' }); -type ReturnType = Static; +type GetQunAlbumListReturn = Awaited>['response']['album_list']; -export class GetQunAlbumList extends OneBotAction { +export class GetQunAlbumList extends OneBotAction { override actionName = ActionName.GetQunAlbumList; override payloadSchema = PayloadSchema; override returnSchema = ReturnSchema; - async _handle (payload: PayloadType) { + async _handle (payload: PayloadType): Promise { return (await this.core.apis.WebApi.getAlbumListByNTQQ(payload.group_id)).response.album_list; } } diff --git a/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts b/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts index abeb9bc9..fc3610ee 100644 --- a/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts +++ b/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts @@ -42,7 +42,13 @@ export class GetUnidirectionalFriendList extends OneBotAction const rsq = { cmd: 'MQUpdateSvc_com_qq_ti.web.OidbSvc.0xe17_0', data: data as PacketBuf }; const rsp_data = await this.core.apis.PacketApi.pkt.operation.sendPacket(rsq, true); const block_json = ProtoBuf(class extends ProtoBufBase { data = PBString(4); }).decode(rsp_data); - const block_list: any[] = JSON.parse(block_json.data).rpt_block_list; + const block_list = JSON.parse(block_json.data).rpt_block_list as { + uint64_uin: number; + str_uid: string; + bytes_nick: string; + uint32_age: number; + bytes_source: string; + }[]; return block_list.map((block) => ({ uin: block.uint64_uin, diff --git a/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts b/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts index 415a1751..fd33ea2a 100644 --- a/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts +++ b/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts @@ -2,17 +2,19 @@ import { ContextMode, normalize, ReturnDataType, SendMsgBase, SendMsgPayload } f import { ActionName } from '@/napcat-onebot/action/router'; // 未验证 +type GoCQHTTPSendForwardMsgPayload = SendMsgPayload & { messages?: any; }; + export class GoCQHTTPSendForwardMsgBase extends SendMsgBase { - protected override async check (payload: SendMsgPayload) { - if ((payload as any).messages) payload.message = normalize((payload as any).messages); + protected override async check (payload: GoCQHTTPSendForwardMsgPayload) { + if (payload.messages) payload.message = normalize(payload.messages); return super.check(payload); } } export class GoCQHTTPSendForwardMsg extends GoCQHTTPSendForwardMsgBase { override actionName = ActionName.GoCQHTTP_SendForwardMsg; - protected override async check (payload: SendMsgPayload) { - if ((payload as any).messages) payload.message = normalize((payload as any).messages); + protected override async check (payload: GoCQHTTPSendForwardMsgPayload) { + if (payload.messages) payload.message = normalize(payload.messages); return super.check(payload); } } diff --git a/packages/napcat-onebot/action/group/GetGroupEssence.ts b/packages/napcat-onebot/action/group/GetGroupEssence.ts index 27d87bd5..edae452b 100644 --- a/packages/napcat-onebot/action/group/GetGroupEssence.ts +++ b/packages/napcat-onebot/action/group/GetGroupEssence.ts @@ -5,6 +5,7 @@ import { MessageUnique } from 'napcat-common/src/message-unique'; import crypto from 'crypto'; import { Static, Type } from '@sinclair/typebox'; import { NetworkAdapterConfig } from '@/napcat-onebot/config/config'; +import { OB11MessageData, OB11MessageDataType } from '@/napcat-onebot/types'; const PayloadSchema = Type.Object({ group_id: Type.String({ description: '群号' }), @@ -58,12 +59,12 @@ export class GetGroupEssence extends OneBotAction { if (msgOriginData) { const { id: message_id, msg: rawMessage } = msgOriginData; const parsed = await this.obContext.apis.MsgApi.parseMessage(rawMessage, config.messagePostFormat); - let content: any[] = []; + let content: OB11MessageData[] = []; if (parsed) { if (Array.isArray(parsed.message)) { content = parsed.message; } else { - content = [{ type: 'text', data: { text: parsed.message } }]; + content = [{ type: OB11MessageDataType.text, data: { text: parsed.message } }]; } } return { @@ -99,24 +100,25 @@ export class GetGroupEssence extends OneBotAction { operator_nick: msg.add_digest_nick, message_id: shortId, operator_time: msg.add_digest_time, - content: msg.msg_content.map((msg) => { + content: msg.msg_content.map((msg): OB11MessageData | undefined => { if (msg.msg_type === 1) { return { - type: 'text', + type: OB11MessageDataType.text, data: { - text: msg?.text, + text: msg?.text ?? '', }, }; } else if (msg.msg_type === 3) { return { - type: 'image', + type: OB11MessageDataType.image, data: { + file: '', url: msg?.image_url, }, }; } return undefined; - }).filter((e): e is any => e !== undefined), + }).filter((e): e is OB11MessageData => e !== undefined), }; })); } diff --git a/packages/napcat-onebot/action/group/SetGroupAddRequest.ts b/packages/napcat-onebot/action/group/SetGroupAddRequest.ts index 70d110af..4eb01aad 100644 --- a/packages/napcat-onebot/action/group/SetGroupAddRequest.ts +++ b/packages/napcat-onebot/action/group/SetGroupAddRequest.ts @@ -4,7 +4,7 @@ import { ActionName } from '@/napcat-onebot/action/router'; import { Static, Type } from '@sinclair/typebox'; const PayloadSchema = Type.Object({ - flag: Type.Union([Type.String(), Type.Number()], { description: '请求flag' }), + flag: Type.String({ description: '请求flag' }), approve: Type.Optional(Type.Union([Type.Boolean(), Type.String()], { description: '是否同意' })), reason: Type.Optional(Type.Union([Type.String({ default: ' ' }), Type.Null()], { description: '拒绝理由' })), count: Type.Optional(Type.Number({ default: 100, description: '搜索通知数量' })), diff --git a/packages/napcat-onebot/action/packet/SetGroupTodo.ts b/packages/napcat-onebot/action/packet/SetGroupTodo.ts index a9dc48c3..2a1d06ea 100644 --- a/packages/napcat-onebot/action/packet/SetGroupTodo.ts +++ b/packages/napcat-onebot/action/packet/SetGroupTodo.ts @@ -6,8 +6,8 @@ import { ActionName } from '../router'; export const SetGroupTodoPayloadSchema = Type.Object({ group_id: Type.Union([Type.String(), Type.Number()], { description: '群号' }), - message_id: Type.Union([Type.String(), Type.Number()], { description: '消息ID' }), - message_seq: Type.Optional(Type.Union([Type.String(), Type.Number()], { description: '消息Seq (可选)' })), + message_id: Type.Optional(Type.String({ description: '消息ID' })), + message_seq: Type.Optional(Type.String({ description: '消息Seq (可选)' })), }); export type SetGroupTodoPayload = Static; @@ -19,6 +19,9 @@ export class SetGroupTodo extends GetPacketStatusDepends