diff --git a/src/core/src/apis/msg.ts b/src/core/src/apis/msg.ts index 143d1a22..fb0fafe4 100644 --- a/src/core/src/apis/msg.ts +++ b/src/core/src/apis/msg.ts @@ -94,6 +94,9 @@ export class NTQQMsgApi { } | undefined> { return napCatCore.session.getMsgService().getMultiMsg(peer, rootMsgId, parentMsgId); } + static async ForwardMsg(peer: Peer, msgIds: string[]) { + return napCatCore.session.getMsgService().forwardMsg(msgIds, peer, [peer], new Map()); + } static async getLastestMsgByUids(peer: Peer, count: number = 20) { let ret = await napCatCore.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { chatInfo: peer, diff --git a/src/onebot11/action/msg/SendMsg/handle-forward-node.ts b/src/onebot11/action/msg/SendMsg/handle-forward-node.ts index 755cda97..d9cc523c 100644 --- a/src/onebot11/action/msg/SendMsg/handle-forward-node.ts +++ b/src/onebot11/action/msg/SendMsg/handle-forward-node.ts @@ -52,10 +52,15 @@ export async function handleForwardNode(destPeer: Peer, messageNodes: OB11Messag // 一个node表示一个人的消息 const nodeId = messageNode.data.id; // 有nodeId表示一个子转发消息卡片 + // 建议改成自带 forward 而不是 clone再发 if (nodeId) { - const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)); + const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId); + if (!nodeMsg) { + logError('转发消息失败,未找到消息', nodeId); + continue; + } if (!needClone) { - nodeMsgIds.push(nodeMsg!.MsgId); + nodeMsgIds.push(nodeMsg.MsgId); } else { if (nodeMsg!.Peer.peerUid !== selfInfo.uid) { // need cloning