diff --git a/packages/napcat-onebot/action/extends/GetAiCharacters.ts b/packages/napcat-onebot/action/extends/GetAiCharacters.ts index 14476c2d..c482b972 100644 --- a/packages/napcat-onebot/action/extends/GetAiCharacters.ts +++ b/packages/napcat-onebot/action/extends/GetAiCharacters.ts @@ -1,6 +1,5 @@ import { ActionName } from '@/napcat-onebot/action/router'; import { GetPacketStatusDepends } from '@/napcat-onebot/action/packet/GetPacketStatus'; -import { AIVoiceChatType } from 'napcat-core/packet/entities/aiChat'; import { Type, Static } from '@sinclair/typebox'; const PayloadSchema = Type.Object({ @@ -33,7 +32,8 @@ export class GetAiCharacters extends GetPacketStatusDepends ({ type: item.category, characters: item.voices.map((voice) => ({ diff --git a/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts b/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts index fc3610ee..546121f8 100644 --- a/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts +++ b/packages/napcat-onebot/action/extends/GetUnidirectionalFriendList.ts @@ -39,16 +39,18 @@ export class GetUnidirectionalFriendList extends OneBotAction }; const packed_data = await this.pack_data(JSON.stringify(req_json)); const data = Buffer.from(packed_data); - const rsq = { cmd: 'MQUpdateSvc_com_qq_ti.web.OidbSvc.0xe17_0', data: data as PacketBuf }; + const rsq = { cmd: 'MQUpdateSvc_com_qq_ti.web.OidbSvc.0xe17_0', data: data as unknown 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 = JSON.parse(block_json.data).rpt_block_list as { + interface BlockItem { uint64_uin: number; str_uid: string; bytes_nick: string; uint32_age: number; bytes_source: string; - }[]; + } + const block_data: { rpt_block_list: BlockItem[]; } = JSON.parse(block_json.data); + const block_list = block_data.rpt_block_list; return block_list.map((block) => ({ uin: block.uint64_uin, diff --git a/packages/napcat-onebot/action/extends/SendPacket.ts b/packages/napcat-onebot/action/extends/SendPacket.ts index 1e702021..1b54a2d0 100644 --- a/packages/napcat-onebot/action/extends/SendPacket.ts +++ b/packages/napcat-onebot/action/extends/SendPacket.ts @@ -21,7 +21,8 @@ export class SendPacket extends GetPacketStatusDepends override actionName = ActionName.SendPacket; async _handle (payload: PayloadType) { 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: Buffer.from(payload.data, 'hex') as PacketBuf }, rsp); + const packetData = Buffer.from(payload.data, 'hex') as unknown as PacketBuf; + const data = await this.core.apis.PacketApi.pkt.operation.sendPacket({ cmd: payload.cmd, data: packetData }, rsp); return typeof data === 'object' ? data.toString('hex') : undefined; } } diff --git a/packages/napcat-onebot/action/extends/SetQQAvatar.ts b/packages/napcat-onebot/action/extends/SetQQAvatar.ts index 953841f8..23b72767 100644 --- a/packages/napcat-onebot/action/extends/SetQQAvatar.ts +++ b/packages/napcat-onebot/action/extends/SetQQAvatar.ts @@ -31,7 +31,7 @@ export default class SetAvatar extends OneBotAction { throw new Error(`头像${payload.file}设置失败,api无返回`); } // log(`头像设置返回:${JSON.stringify(ret)}`) - if (ret.result as number === 1004022) { + if (Number(ret.result) === 1004022) { throw new Error(`头像${payload.file}设置失败,文件可能不是图片格式`); } else if (ret.result !== 0) { throw new Error(`头像${payload.file}设置失败,未知的错误,${ret.result}:${ret.errMsg}`); diff --git a/packages/napcat-onebot/action/go-cqhttp/GetForwardMsg.ts b/packages/napcat-onebot/action/go-cqhttp/GetForwardMsg.ts index 393b47a6..b1543ced 100644 --- a/packages/napcat-onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/packages/napcat-onebot/action/go-cqhttp/GetForwardMsg.ts @@ -14,11 +14,15 @@ const PayloadSchema = Type.Object({ type PayloadType = Static; const ReturnSchema = Type.Object({ - messages: Type.Optional(Type.Array(Type.Any(), { description: '消息列表' })), + messages: Type.Optional(Type.Array(Type.Unknown(), { description: '消息列表' })), }, { description: '合并转发消息' }); type ReturnType = Static; +function isForward (msg: OB11MessageData | string): msg is OB11MessageForward { + return typeof msg !== 'string' && msg.type === OB11MessageDataType.forward; +} + export class GoCQHTTPGetForwardMsgAction extends OneBotAction { override actionName = ActionName.GoCQHTTP_GetForwardMsg; override payloadSchema = PayloadSchema; @@ -43,13 +47,18 @@ export class GoCQHTTPGetForwardMsgAction extends OneBotAction { - return { + const fakeMsg: RawMessage = { chatType: ChatType.KCHATTYPEGROUP, elements: [{ elementType: ElementType.MULTIFORWARD, @@ -80,7 +89,7 @@ export class GoCQHTTPGetForwardMsgAction extends OneBotAction { const ob = (await this.obContext.apis.MsgApi.parseMessageV2(createFakeForwardMsg(resId), true))?.arrayMsg; - if (ob) { + const firstMsg = ob?.message?.[0]; + if (firstMsg && isForward(firstMsg)) { return { - messages: (ob?.message?.[0] as OB11MessageForward)?.data?.content, + messages: firstMsg.data.content, }; } throw new Error('protocolFallbackLogic: 找不到相关的聊天记录'); @@ -138,9 +149,12 @@ export class GoCQHTTPGetForwardMsgAction extends OneBotAction this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat, payload.parse_mult_msg, payload.disable_get_url))) - ).filter(msg => msg !== undefined); - return { messages: ob11MsgList as OB11Message[] }; + ).filter((msg): msg is OB11Message => msg !== undefined); + return { messages: ob11MsgList }; } } diff --git a/packages/napcat-onebot/action/go-cqhttp/GetGroupFilesByFolder.ts b/packages/napcat-onebot/action/go-cqhttp/GetGroupFilesByFolder.ts index cf63bfa4..d22ea7b4 100644 --- a/packages/napcat-onebot/action/go-cqhttp/GetGroupFilesByFolder.ts +++ b/packages/napcat-onebot/action/go-cqhttp/GetGroupFilesByFolder.ts @@ -13,8 +13,8 @@ const PayloadSchema = Type.Object({ type PayloadType = Static; const ReturnSchema = Type.Object({ - files: Type.Array(Type.Any(), { description: '文件列表' }), - folders: Type.Array(Type.Any(), { description: '文件夹列表' }), + files: Type.Array(Type.Unknown(), { description: '文件列表' }), + folders: Type.Array(Type.Unknown(), { description: '文件夹列表' }), }, { description: '群文件夹文件列表' }); type ReturnType = Static; @@ -23,19 +23,20 @@ export class GetGroupFilesByFolder extends OneBotAction override actionName = ActionName.GoCQHTTP_GetGroupFilesByFolder; override payloadSchema = PayloadSchema; override returnSchema = ReturnSchema; - async _handle (payload: PayloadType) { - const ret = await this.core.apis.MsgApi.getGroupFileList(payload.group_id.toString(), { + async _handle (payload: PayloadType): Promise { + const retRaw = await this.core.apis.MsgApi.getGroupFileList(payload.group_id.toString(), { sortType: 1, fileCount: +payload.file_count, startIndex: 0, sortOrder: 2, showOnlinedocFolder: 0, folderId: payload.folder ?? payload.folder_id ?? '', - }).catch(() => []); + }); + const ret = Array.isArray(retRaw) ? retRaw : []; return { files: ret.filter(item => item.fileInfo) .map(item => OB11Construct.file(item.peerId, item.fileInfo!)), - folders: [] as [], + folders: [], }; } } diff --git a/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts index fbd6a8d1..71fe33bc 100644 --- a/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/packages/napcat-onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -46,7 +46,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat, payload.parse_mult_msg, payload.disable_get_url, payload.quick_reply))) - ).filter(msg => msg !== undefined); - return { messages: ob11MsgList as OB11Message[] }; + ).filter((msg): msg is OB11Message => msg !== undefined); + return { messages: ob11MsgList }; } } diff --git a/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts b/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts index fd33ea2a..e56b375b 100644 --- a/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts +++ b/packages/napcat-onebot/action/go-cqhttp/SendForwardMsg.ts @@ -1,8 +1,9 @@ +import { OB11MessageMixType } from '@/napcat-onebot/types'; import { ContextMode, normalize, ReturnDataType, SendMsgBase, SendMsgPayload } from '@/napcat-onebot/action/msg/SendMsg'; import { ActionName } from '@/napcat-onebot/action/router'; // 未验证 -type GoCQHTTPSendForwardMsgPayload = SendMsgPayload & { messages?: any; }; +type GoCQHTTPSendForwardMsgPayload = SendMsgPayload & { messages?: OB11MessageMixType; }; export class GoCQHTTPSendForwardMsgBase extends SendMsgBase { protected override async check (payload: GoCQHTTPSendForwardMsgPayload) { @@ -20,14 +21,14 @@ export class GoCQHTTPSendForwardMsg extends GoCQHTTPSendForwardMsgBase { } export class GoCQHTTPSendPrivateForwardMsg extends GoCQHTTPSendForwardMsgBase { override actionName = ActionName.GoCQHTTP_SendPrivateForwardMsg; - override async _handle (payload: SendMsgPayload): Promise { + override async _handle (payload: GoCQHTTPSendForwardMsgPayload): Promise { return this.base_handle(payload, ContextMode.Private); } } export class GoCQHTTPSendGroupForwardMsg extends GoCQHTTPSendForwardMsgBase { override actionName = ActionName.GoCQHTTP_SendGroupForwardMsg; - override async _handle (payload: SendMsgPayload): Promise { + override async _handle (payload: GoCQHTTPSendForwardMsgPayload): Promise { return this.base_handle(payload, ContextMode.Group); } } diff --git a/packages/napcat-onebot/action/go-cqhttp/SetGroupPortrait.ts b/packages/napcat-onebot/action/go-cqhttp/SetGroupPortrait.ts index 0c68893d..8b3abb5b 100644 --- a/packages/napcat-onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/packages/napcat-onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -10,12 +10,19 @@ export const SetGroupPortraitPayloadSchema = Type.Object({ export type SetGroupPortraitPayload = Static; -export default class SetGroupPortrait extends OneBotAction { +const ReturnSchema = Type.Object({ + result: Type.Number(), + errMsg: Type.String(), +}, { description: '设置结果' }); + +export type ReturnType = Static; + +export default class SetGroupPortrait extends OneBotAction { override actionName = ActionName.SetGroupPortrait; override payloadSchema = SetGroupPortraitPayloadSchema; - override returnSchema = Type.Any({ description: '设置结果' }); + override returnSchema = ReturnSchema; - async _handle (payload: SetGroupPortraitPayload): Promise { + async _handle (payload: SetGroupPortraitPayload): Promise { const { path, success } = (await uriToLocalFile(this.core.NapCatTempPath, payload.file)); if (!success) { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); @@ -27,12 +34,15 @@ export default class SetGroupPortrait extends OneBotAction { }); throw new Error(`头像${payload.file}设置失败,无法获取头像,文件可能不存在`);