From 22faf5b831ffdbf4432cf490193828f8ae045176 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: Thu, 8 May 2025 17:58:12 +0800 Subject: [PATCH] fix --- src/core/apis/file.ts | 1 + src/onebot/action/msg/SendMsg.ts | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 800858fc..7b124b47 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -397,6 +397,7 @@ export class NTQQFileApi { } }); }); + return res.flat(); } async downloadMedia(msgId: string, chatType: ChatType, peerUid: string, elementId: string, thumbPath: string, sourcePath: string, timeout = 1000 * 60 * 2, force: boolean = false) { diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index bb17807c..53d5ac16 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -174,9 +174,11 @@ export class SendMsgBase extends OneBotAction { nickname: string, }, dp: number = 0): Promise<{ finallySendElements: SendArkElement, - res_id?: string + res_id?: string, + deleteAfterSentFiles: string[], } | null> { const packetMsg: PacketMsg[] = []; + let delFiles: string[] = []; for (const node of messageNodes) { if (dp >= 3) { this.core.context.logger.logWarn('转发消息深度超过3层,将停止解析!'); @@ -192,9 +194,11 @@ export class SendMsgBase extends OneBotAction { nickname: (node.data.nickname || node.data.name) ?? parentMeta?.nickname ?? 'QQ用户', }, dp + 1); sendElements = uploadReturnData?.finallySendElements ? [uploadReturnData.finallySendElements] : []; + delFiles.push(...(uploadReturnData?.deleteAfterSentFiles || [])); } else { const sendElementsCreateReturn = await this.obContext.apis.MsgApi.createSendElements(OB11Data, msgPeer); sendElements = sendElementsCreateReturn.sendElements; + delFiles.push(...sendElementsCreateReturn.deleteAfterSentFiles); } const packetMsgElements: rawMsgWithSendMsg = { @@ -218,7 +222,8 @@ export class SendMsgBase extends OneBotAction { const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsg.Peer, [nodeMsg.MsgId])).msgList[0]; this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${stringifyWithBigInt(msg)}`); if (msg) { - await this.core.apis.FileApi.downloadRawMsgMedia([msg]); + let msgcahce = await this.core.apis.FileApi.downloadRawMsgMedia([msg]); + delFiles.push(...msgcahce); const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgToPacketMsg(msg, msgPeer); this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); packetMsg.push(transformedMsg); @@ -234,6 +239,7 @@ export class SendMsgBase extends OneBotAction { const resid = await this.core.apis.PacketApi.pkt.operation.UploadForwardMsg(packetMsg, msgPeer.chatType === ChatType.KCHATTYPEGROUP ? +msgPeer.peerUid : 0); const forwardJson = ForwardMsgBuilder.fromPacketMsg(resid, packetMsg, source, news, summary, prompt); return { + deleteAfterSentFiles: delFiles, finallySendElements: { elementType: ElementType.ARK, elementId: '', @@ -255,7 +261,7 @@ export class SendMsgBase extends OneBotAction { const res_id = uploadReturnData?.res_id; const finallySendElements = uploadReturnData?.finallySendElements; if (!finallySendElements) throw Error('转发消息失败,生成节点为空'); - const returnMsg = await this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(msgPeer, [finallySendElements], []).catch(() => undefined); + const returnMsg = await this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(msgPeer, [finallySendElements], uploadReturnData.deleteAfterSentFiles || []).catch(() => undefined); return { message: returnMsg ?? null, res_id: res_id! }; }