From 15f7cd981438242727c273c2b08e9e8159310e86 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Sun, 27 Oct 2024 09:33:20 +0800 Subject: [PATCH] feat: better fake forwardMsg logic & display --- src/common/forward-msg-builder.ts | 2 +- src/core/packet/msg/converter.ts | 7 ++++--- src/onebot/action/msg/SendMsg.ts | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/common/forward-msg-builder.ts b/src/common/forward-msg-builder.ts index 256e0c35..78c98a4b 100644 --- a/src/common/forward-msg-builder.ts +++ b/src/common/forward-msg-builder.ts @@ -56,7 +56,7 @@ export class ForwardMsgBuilder { if (!source) { source = isGroupMsg ? "群聊的聊天记录" : msg.length - ? Array.from(new Set(msg.map(m => m.senderName))) + ? Array.from(new Set(msg.slice(0, 4).map(m => m.senderName))) .join('和') + '的聊天记录' : '聊天记录'; } diff --git a/src/core/packet/msg/converter.ts b/src/core/packet/msg/converter.ts index 6e90a264..34b64fda 100644 --- a/src/core/packet/msg/converter.ts +++ b/src/core/packet/msg/converter.ts @@ -1,4 +1,5 @@ import { + Peer, ChatType, ElementType, MessageElement, @@ -101,13 +102,13 @@ export class PacketMsgConverter { }; } - rawMsgToPacketMsg(msg: RawMessage): PacketMsg { + rawMsgToPacketMsg(msg: RawMessage, ctxPeer: Peer): PacketMsg { return { seq: +msg.msgSeq, - groupId: msg.chatType === ChatType.KCHATTYPEGROUP ? +msg.peerUid : undefined, + groupId: ctxPeer.chatType === ChatType.KCHATTYPEGROUP ? +msg.peerUid : undefined, senderUid: msg.senderUid, senderUin: +msg.senderUin, - senderName: msg.sendNickName ?? 'QQ用户', + senderName: msg.sendMemberName ?? '' !== '' ? msg.sendMemberName ?? '' : msg.sendNickName ?? '' !== '' ? msg.sendNickName ?? "QQ用户" : "QQ用户", time: +msg.msgTime, msg: msg.elements.map((element) => { if (!this.isValidElementType(element.elementType)) return null; diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 18084b19..d2f79292 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -204,7 +204,7 @@ export class SendMsg extends BaseAction { const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsg.Peer, [nodeMsg.MsgId])).msgList[0]; logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${JSON.stringify(msg)}`); await this.core.apis.FileApi.downloadRawMsgMedia([msg]); - const transformedMsg = this.core.apis.PacketApi.packetSession?.packer.packetConverter.rawMsgToPacketMsg(msg); + const transformedMsg = this.core.apis.PacketApi.packetSession?.packer.packetConverter.rawMsgToPacketMsg(msg, msgPeer); logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${JSON.stringify(transformedMsg)}`); packetMsg.push(transformedMsg!); } else {