From aea67db27c50773f4b50ee331455f37f21007f13 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Wed, 14 Feb 2024 01:35:05 +0800 Subject: [PATCH] fix: report self sent `message_id` --- manifest.json | 2 +- src/main/main.ts | 8 ++++-- src/ntqqapi/hook.ts | 8 ++---- src/onebot11/constructor.ts | 51 +++++++++++++++++++++---------------- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/manifest.json b/manifest.json index 6ae20e2..25b9cbc 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "LiteLoaderQQNT的OneBotApi", - "version": "3.0.5", + "version": "3.0.6", "thumbnail": "./icon.png", "authors": [{ "name": "linyuchen", diff --git a/src/main/main.ts b/src/main/main.ts index 3205ffd..43b5400 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -12,7 +12,7 @@ import { } from "../common/channels"; import { postMsg, startExpress } from "../onebot11/server"; import { CONFIG_DIR, getConfigUtil, log } from "../common/utils"; -import { addHistoryMsg, selfInfo } from "../common/data"; +import { addHistoryMsg, msgHistory, selfInfo } from "../common/data"; import { hookNTQQApiReceive, ReceiveCmd, registerReceiveHook } from "../ntqqapi/hook"; import { OB11Constructor } from "../onebot11/constructor"; import { NTQQApi } from "../ntqqapi/ntcall"; @@ -48,6 +48,10 @@ function onLoad() { function postRawMsg(msgList: RawMessage[]) { const {debug, reportSelfMessage} = getConfigUtil().getConfig(); for (let message of msgList) { + message.msgShortId = msgHistory[message.msgId]?.msgShortId + if (!message.msgShortId) { + addHistoryMsg(message) + } OB11Constructor.message(message).then((msg) => { if (debug) { msg.raw = message; @@ -78,7 +82,7 @@ function onLoad() { if (!reportSelfMessage) { return } - log("reportSelfMessage", payload) + // log("reportSelfMessage", payload) try { postRawMsg([payload.msgRecord]); } catch (e) { diff --git a/src/ntqqapi/hook.ts b/src/ntqqapi/hook.ts index 01646f0..3b281b3 100644 --- a/src/ntqqapi/hook.ts +++ b/src/ntqqapi/hook.ts @@ -137,12 +137,8 @@ registerReceiveHook<{ msgList: Array }>(ReceiveCmd.UPDATE_MSG, (payl registerReceiveHook<{ msgList: Array }>(ReceiveCmd.NEW_MSG, (payload) => { for (const message of payload.msgList) { - log("收到新消息,push到历史记录", message) - if (!msgHistory[message.msgId]) { - addHistoryMsg(message) - } else { - Object.assign(msgHistory[message.msgId], message) - } + // log("收到新消息,push到历史记录", message) + addHistoryMsg(message) } const msgIds = Object.keys(msgHistory); if (msgIds.length > 30000) { diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 018462b..2bf0dd1 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -1,12 +1,21 @@ -import {OB11MessageDataType, OB11GroupMemberRole, OB11Message, OB11MessageData, OB11Group, OB11GroupMember, OB11User} from "./types"; +import { + OB11MessageDataType, + OB11GroupMemberRole, + OB11Message, + OB11MessageData, + OB11Group, + OB11GroupMember, + OB11User +} from "./types"; import { AtType, ChatType, Group, GroupMember, IMAGE_HTTP_HOST, RawMessage, SelfInfo, User } from '../ntqqapi/types'; -import { addHistoryMsg, getFriend, getGroupMember, getHistoryMsgBySeq, selfInfo } from '../common/data'; -import {file2base64, getConfigUtil, log} from "../common/utils"; +import { addHistoryMsg, getFriend, getGroupMember, getHistoryMsgBySeq, msgHistory, selfInfo } from '../common/data'; +import { file2base64, getConfigUtil, log } from "../common/utils"; import { NTQQApi } from "../ntqqapi/ntcall"; export class OB11Constructor { static async message(msg: RawMessage): Promise { + const {enableBase64} = getConfigUtil().getConfig() const message_type = msg.chatType == ChatType.group ? "group" : "private"; const resMsg: OB11Message = { @@ -56,13 +65,13 @@ export class OB11Constructor { } else { let atUid = element.textElement.atNtUid let atQQ = element.textElement.atUid - if (!atQQ || atQQ === "0"){ + if (!atQQ || atQQ === "0") { const atMember = await getGroupMember(msg.peerUin, null, atUid) - if (atMember){ + if (atMember) { atQQ = atMember.uin } } - if (atQQ){ + if (atQQ) { message_data["data"]["mention"] = atQQ message_data["data"]["qq"] = atQQ } @@ -78,7 +87,7 @@ export class OB11Constructor { try { await NTQQApi.downloadMedia(msg.msgId, msg.chatType, msg.peerUid, element.elementId, element.picElement.thumbPath.get(0), element.picElement.sourcePath) - }catch (e) { + } catch (e) { message_data["data"]["http_file"] = IMAGE_HTTP_HOST + element.picElement.originImageUrl } } else if (element.replyElement) { @@ -86,8 +95,7 @@ export class OB11Constructor { const replyMsg = getHistoryMsgBySeq(element.replyElement.replayMsgSeq) if (replyMsg) { message_data["data"]["id"] = replyMsg.msgShortId - } - else{ + } else { continue } } else if (element.pttElement) { @@ -104,10 +112,9 @@ export class OB11Constructor { message_data["type"] = OB11MessageDataType.json; message_data["data"]["data"] = element.arkElement.bytesData; } - if (message_data.data.http_file){ + if (message_data.data.http_file) { message_data.data.file = message_data.data.http_file - } - else if (message_data.data.file) { + } else if (message_data.data.file) { let filePath: string = message_data.data.file; message_data.data.file = "file://" + filePath if (enableBase64) { @@ -125,24 +132,24 @@ export class OB11Constructor { } return resMsg; } - - static friend(friend: User): OB11User{ + + static friend(friend: User): OB11User { return { user_id: friend.uin, nickname: friend.nick, remark: friend.remark } - + } - static selfInfo(selfInfo: SelfInfo): OB11User{ + static selfInfo(selfInfo: SelfInfo): OB11User { return { user_id: selfInfo.uin, nickname: selfInfo.nick } } - static friends(friends: User[]): OB11User[]{ + static friends(friends: User[]): OB11User[] { return friends.map(OB11Constructor.friend) } @@ -154,7 +161,7 @@ export class OB11Constructor { }[role] } - static groupMember(group_id: string, member: GroupMember): OB11GroupMember{ + static groupMember(group_id: string, member: GroupMember): OB11GroupMember { return { group_id, user_id: member.uin, @@ -163,19 +170,19 @@ export class OB11Constructor { } } - static groupMembers(group: Group): OB11GroupMember[]{ + static groupMembers(group: Group): OB11GroupMember[] { log("construct ob11 group members", group) - return group.members.map(m=>OB11Constructor.groupMember(group.groupCode, m)) + return group.members.map(m => OB11Constructor.groupMember(group.groupCode, m)) } - static group(group: Group): OB11Group{ + static group(group: Group): OB11Group { return { group_id: group.groupCode, group_name: group.groupName } } - static groups(groups: Group[]): OB11Group[]{ + static groups(groups: Group[]): OB11Group[] { return groups.map(OB11Constructor.group) } } \ No newline at end of file