From 7d91e05a69597fc3318110443ac3f309821cf8d8 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: Mon, 2 Sep 2024 16:31:18 +0800 Subject: [PATCH 1/3] fix: #332 --- src/onebot/action/msg/DeleteMsg.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/onebot/action/msg/DeleteMsg.ts b/src/onebot/action/msg/DeleteMsg.ts index 2c7e5678..b95004cb 100644 --- a/src/onebot/action/msg/DeleteMsg.ts +++ b/src/onebot/action/msg/DeleteMsg.ts @@ -28,18 +28,14 @@ class DeleteMsg extends BaseAction { const ret = this.core.eventWrapper.registerListen( 'NodeIKernelMsgListener/onMsgInfoListUpdate', 1, - 5000, + 1000, (msgs) => !!msgs.find(m => m.msgId === msg.MsgId && m.recallTime !== '0'), - ).catch(() => new Promise((resolve) => { - resolve(undefined); - })); + ).catch(() => undefined); await this.core.apis.MsgApi.recallMsg(msg.Peer, [msg.MsgId]); const data = await ret; - if (!data) { - //throw new Error('Recall failed'); - } - //await sleep(100); - //await NTQQMsgApi.getMsgsByMsgId(msg.Peer, [msg.MsgId]); + if (!data) throw new Error('Recall failed'); + } else { + throw new Error('Recall failed'); } } } From dcbff3f569bae52981b68b8a49cb046d01709e0e 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: Mon, 2 Sep 2024 16:31:42 +0800 Subject: [PATCH 2/3] release: 2.2.37 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- src/webui/ui/NapCat.ts | 2 +- static/assets/renderer.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index f36eafe9..a261dbc1 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "2.2.36", + "version": "2.2.37", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 8efd4560..b6edac13 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "2.2.36", + "version": "2.2.37", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 2eb6713b..170a2b8a 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '2.2.36'; +export const napCatVersion = '2.2.37'; diff --git a/src/webui/ui/NapCat.ts b/src/webui/ui/NapCat.ts index 54f1be35..a442acf7 100644 --- a/src/webui/ui/NapCat.ts +++ b/src/webui/ui/NapCat.ts @@ -30,7 +30,7 @@ async function onSettingWindowCreated(view: Element) { SettingItem( 'Napcat', undefined, - SettingButton('V2.2.36', 'napcat-update-button', 'secondary'), + SettingButton('V2.2.37', 'napcat-update-button', 'secondary'), ), ]), SettingList([ diff --git a/static/assets/renderer.js b/static/assets/renderer.js index d9884b07..7f0f5194 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V2.2.36", "napcat-update-button", "secondary") + SettingButton("V2.2.37", "napcat-update-button", "secondary") ) ]), SettingList([ From c384bd687555db726002f19b2548d32511f15863 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: Mon, 2 Sep 2024 17:31:27 +0800 Subject: [PATCH 3/3] release: 2.2.38 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- src/core/apis/group.ts | 69 --------------------------------------- src/core/apis/msg.ts | 37 ++++++++++++--------- src/core/entities/msg.ts | 3 +- src/onebot/api/msg.ts | 26 +++------------ src/onebot/index.ts | 50 ++++++++++++++-------------- src/webui/ui/NapCat.ts | 2 +- static/assets/renderer.js | 2 +- 10 files changed, 58 insertions(+), 137 deletions(-) diff --git a/manifest.json b/manifest.json index a261dbc1..e199eaf5 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "2.2.37", + "version": "2.2.38", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index b6edac13..89db0265 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "2.2.37", + "version": "2.2.38", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 170a2b8a..c2b87813 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '2.2.37'; +export const napCatVersion = '2.2.38'; diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 7844ca3b..dacb96cb 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -121,51 +121,6 @@ export class NTQQGroupApi { return group; } - async getGroupMemberLatestSendTimeCache(GroupCode: string, uids: string[]) { - return this.getGroupMemberLatestSendTime(GroupCode, uids); - } - - async getGroupMemberLatestSendTime(GroupCode: string, uids: string[]) { - const getData = async (uid: string) => { - const msgListWrapper = await this.getLatestMsgByUids(GroupCode, [uid]); - if (msgListWrapper.result !== 0 && msgListWrapper.msgList.length < 1) { - return undefined; - } - return { sendUin: msgListWrapper.msgList[0].senderUin, sendTime: msgListWrapper.msgList[0].msgTime }; - }; - const PromiseData: Promise<({ - sendUin: string; - sendTime: string; - } | undefined)>[] = []; - const ret: Map = new Map(); - for (const uid of uids) { - PromiseData.push(getData(uid).catch(() => undefined)); - } - const allRet = await runAllWithTimeout(PromiseData, 2500); - for (const PromiseDo of allRet) { - if (PromiseDo) { - ret.set(PromiseDo.sendUin, PromiseDo.sendTime); - } - } - return ret; - } - - async getLatestMsgByUids(GroupCode: string, uids: string[]) { - return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { - chatInfo: { - peerUid: GroupCode, - chatType: ChatType.KCHATTYPEGROUP, - }, - filterMsgType: [], - filterSendersUid: uids, - filterMsgToTime: '0', - filterMsgFromTime: '0', - isReverseOrder: false, - isIncludeCurrent: true, - pageLimit: 1, - }); - } - async getGroupMemberAll(GroupCode: string, forced = false) { return this.context.session.getGroupService().getAllMemberList(GroupCode, forced); } @@ -202,30 +157,6 @@ export class NTQQGroupApi { } return member; } - - async getLatestMsg(GroupCode: string, uins: string[]) { - const uids: Array = []; - for (const uin of uins) { - const uid = await this.core.apis.UserApi.getUidByUinV2(uin); - if (uid) { - uids.push(uid); - } - } - return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { - chatInfo: { - peerUid: GroupCode, - chatType: ChatType.KCHATTYPEGROUP, - }, - filterMsgType: [], - filterSendersUid: uids, - filterMsgToTime: '0', - filterMsgFromTime: '0', - isReverseOrder: false, - isIncludeCurrent: true, - pageLimit: 1, - }); - } - async getGroupRecommendContactArkJson(GroupCode: string) { return this.context.session.getGroupService().getGroupRecommendContactArkJson(GroupCode); } diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index 6a392d3e..c4e98c28 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -54,19 +54,6 @@ export class NTQQMsgApi { return this.context.session.getMsgService().forwardMsg(msgIds, peer, [peer], new Map()); } - async getLatestMsgByUids(peer: Peer, count: number = 20, isReverseOrder: boolean = false) { - return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { - chatInfo: peer, - filterMsgType: [], - filterSendersUid: [], - filterMsgToTime: '0', - filterMsgFromTime: '0', - isReverseOrder: isReverseOrder,//此参数有点离谱 注意不是本次查询的排序 而是全部消历史信息的排序 默认false 从新消息拉取到旧消息 - isIncludeCurrent: true, - pageLimit: count, - }); - } - async getMsgsByMsgId(peer: Peer | undefined, msgIds: string[] | undefined) { if (!peer) throw new Error('peer is not allowed'); if (!msgIds) throw new Error('msgIds is not allowed'); @@ -94,11 +81,29 @@ export class NTQQMsgApi { pageLimit: 1, }); } - + async queryMsgsWithFilterExWithSeqV2(peer: Peer, msgSeq: string, MsgTime: string, SendersUid: string[]) { + return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', msgSeq, { + chatInfo: peer, + filterMsgType: [], + filterSendersUid: SendersUid, + filterMsgToTime: MsgTime, + filterMsgFromTime: MsgTime, + isReverseOrder: false, + isIncludeCurrent: true, + pageLimit: 1, + }); + } async getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean) { return await this.context.session.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, z); } - + async getMsgBySeqList(peer: Peer, msgSeqList: string[]) { + //坏的 + return await this.context.session.getMsgService().getMsgsBySeqList(peer, msgSeqList); + } + async getMsgBySeqExFirstMsg(peer: Peer, rootMsgId: string, replyMsgId: string) { + let reply = await this.context.session.getMsgService().getSourceOfReplyMsgV2(peer, rootMsgId, replyMsgId); + console.log(reply); + } async getMsgExBySeq(peer: Peer, msgSeq: string) { const DateNow = Math.floor(Date.now() / 1000); const filterMsgFromTime = (DateNow - 300).toString(); @@ -233,7 +238,7 @@ export class NTQQMsgApi { () => true, (msgRecords) => msgRecords.some( msgRecord => msgRecord.peerUid === destPeer.peerUid - && msgRecord.senderUid === this.core.selfInfo.uid + && msgRecord.senderUid === this.core.selfInfo.uid ), ); for (const msg of msgList) { diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 4f7f7bde..9e62e3fa 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -370,7 +370,8 @@ export interface ReplyElement { replayMsgSeq: string; replayMsgId: string; senderUin: string; - senderUinStr: string; + senderUidStr?: string; + replyMsgTime?: string; } export interface SendReplyElement { diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 85663ba1..8e4a13b4 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -219,7 +219,7 @@ export class OneBotMsgApi { peerUid: msg.peerUid, guildId: '', }; - if (!records) { + if (!records || !element.replyMsgTime || !element.senderUidStr) { this.core.context.logger.logError('获取不到引用的消息', element.replayMsgSeq); return null; } @@ -234,29 +234,13 @@ export class OneBotMsgApi { if (records.peerUin === '284840486') { return createReplyData(records.msgId); } - - let replyMsg: RawMessage | undefined; - // Attempt 1 - replyMsg = (await this.core.apis.MsgApi.getMsgsBySeqAndCount(peer,element.replayMsgSeq, 1, true, true)) - .msgList - .find(msg => msg.msgRandom === records.msgRandom); + let replyMsg = (await this.core.apis.MsgApi.queryMsgsWithFilterExWithSeqV2(peer, element.replayMsgSeq, element.replyMsgTime, [element.senderUidStr])) + .msgList.find(msg => msg.msgRandom === records.msgRandom); if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - // Attempt 2 - replyMsg = (await this.core.apis.MsgApi.getSingleMsg(peer, element.replayMsgSeq)).msgList[0]; - - if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - // Attempt 3 - const replyMsgList = (await this.core.apis.MsgApi.getMsgExBySeq(peer, records.msgSeq)).msgList; - if (replyMsgList.length < 1) { - this.core.context.logger.logError('回复消息消息验证失败', element.replayMsgSeq); - return null; - } - replyMsg = replyMsgList.filter(e => e.msgSeq == records.msgSeq) - .sort((a, b) => parseInt(a.msgTime) - parseInt(b.msgTime))[0]; - } + this.core.context.logger.logError('获取不到引用的消息', element.replayMsgSeq); + return null; } - return createReplyData(replyMsg.msgId); }, diff --git a/src/onebot/index.ts b/src/onebot/index.ts index c3ac89c4..8efab1c3 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -242,31 +242,31 @@ export class NapCatOneBot11Adapter { const msgListener = new NodeIKernelMsgListener(); msgListener.onRecvSysMsg = async msg => { - const sysMsg = SysMessage.fromBinary(Uint8Array.from(msg)); - if (sysMsg.msgSpec.length === 0) { - return; - } - const { msgType, subType, subSubType } = sysMsg.msgSpec[0]; - if (msgType === 732 && subType === 16 && subSubType === 16) { - const greyTip = GreyTipWrapper.fromBinary(Uint8Array.from(sysMsg.bodyWrapper!.wrappedBody.slice(7))); - if (greyTip.subTypeId === 36) { - const emojiLikeToOthers = EmojiLikeToOthersWrapper1 - .fromBinary(greyTip.rest) - .wrapper! - .body!; - if (emojiLikeToOthers.attributes?.operation !== 1) { // Un-like - return; - } - const eventOrEmpty = await this.apis.GroupApi.createGroupEmojiLikeEvent( - greyTip.groupCode.toString(), - await this.core.apis.UserApi.getUinByUidV2(emojiLikeToOthers.attributes!.senderUid), - emojiLikeToOthers.msgSpec!.msgSeq.toString(), - emojiLikeToOthers.attributes!.emojiId, - ); - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - eventOrEmpty && await this.networkManager.emitEvent(eventOrEmpty); - } - } + // const sysMsg = SysMessage.fromBinary(Uint8Array.from(msg)); + // if (sysMsg.msgSpec.length === 0) { + // return; + // } + // const { msgType, subType, subSubType } = sysMsg.msgSpec[0]; + // if (msgType === 732 && subType === 16 && subSubType === 16) { + // const greyTip = GreyTipWrapper.fromBinary(Uint8Array.from(sysMsg.bodyWrapper!.wrappedBody.slice(7))); + // if (greyTip.subTypeId === 36) { + // const emojiLikeToOthers = EmojiLikeToOthersWrapper1 + // .fromBinary(greyTip.rest) + // .wrapper! + // .body!; + // if (emojiLikeToOthers.attributes?.operation !== 1) { // Un-like + // return; + // } + // const eventOrEmpty = await this.apis.GroupApi.createGroupEmojiLikeEvent( + // greyTip.groupCode.toString(), + // await this.core.apis.UserApi.getUinByUidV2(emojiLikeToOthers.attributes!.senderUid), + // emojiLikeToOthers.msgSpec!.msgSeq.toString(), + // emojiLikeToOthers.attributes!.emojiId, + // ); + // // eslint-disable-next-line @typescript-eslint/no-unused-expressions + // eventOrEmpty && await this.networkManager.emitEvent(eventOrEmpty); + // } + // } }; msgListener.onInputStatusPush = async data => { diff --git a/src/webui/ui/NapCat.ts b/src/webui/ui/NapCat.ts index a442acf7..8f80b3c6 100644 --- a/src/webui/ui/NapCat.ts +++ b/src/webui/ui/NapCat.ts @@ -30,7 +30,7 @@ async function onSettingWindowCreated(view: Element) { SettingItem( 'Napcat', undefined, - SettingButton('V2.2.37', 'napcat-update-button', 'secondary'), + SettingButton('V2.2.38', 'napcat-update-button', 'secondary'), ), ]), SettingList([ diff --git a/static/assets/renderer.js b/static/assets/renderer.js index 7f0f5194..c82de3ff 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V2.2.37", "napcat-update-button", "secondary") + SettingButton("V2.2.38", "napcat-update-button", "secondary") ) ]), SettingList([