From b00fe0b5f8fd236c156bc86ff2036bac75948754 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: Tue, 6 Aug 2024 20:38:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=A0=87=E8=AE=B0TODO=E5=92=8C?= =?UTF-8?q?=E5=85=9C=E5=BA=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/src/apis/msg.ts | 33 ++++++++++++------- .../msg/SendMsg/create-send-elements.ts | 2 +- src/onebot11/constructor.ts | 2 +- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/core/src/apis/msg.ts b/src/core/src/apis/msg.ts index 5bf86ffd..ba85dbe7 100644 --- a/src/core/src/apis/msg.ts +++ b/src/core/src/apis/msg.ts @@ -104,7 +104,7 @@ export class NTQQMsgApi { filterSendersUid: [], filterMsgToTime: '0', filterMsgFromTime: '0', - isReverseOrder: isReverseOrder, + isReverseOrder: isReverseOrder,//此参数有点离谱 注意不是本次查询的排序 而是全部消历史信息的排序 默认false 从新消息拉取到旧消息 isIncludeCurrent: true, pageLimit: count, }); @@ -113,6 +113,7 @@ export class NTQQMsgApi { static 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'); + //Mlikiowa: 参数不合规会导致NC异常崩溃 原因是TX未对进入参数判断 对应Android标记@NotNull AndroidJADX分析可得 return await napCatCore.session.getMsgService().getMsgsByMsgId(peer, msgIds); } static async getSingleMsg(peer: Peer, seq: string) { @@ -123,7 +124,7 @@ export class NTQQMsgApi { } static async queryMsgsWithFilterExWithSeq(peer: Peer, msgSeq: string) { let ret = await napCatCore.session.getMsgService().queryMsgsWithFilterEx('0', '0', msgSeq, { - chatInfo: peer, + chatInfo: peer,//此处为Peer 为关键查询参数 没有啥也没有 by mlik iowa filterMsgType: [], filterSendersUid: [], filterMsgToTime: '0', @@ -150,6 +151,7 @@ export class NTQQMsgApi { 1, 5000, (groupFileListResult: onGroupFileInfoUpdateParamType) => { + //Developer Mlikiowa Todo: 此处有问题 无法判断是否成功 return true; }, GroupCode, @@ -168,19 +170,26 @@ export class NTQQMsgApi { }, msgIds); } static async sendMsgV2(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { - // function generateMsgId() { - // const timestamp = Math.floor(Date.now() / 1000); - // const random = Math.floor(Math.random() * Math.pow(2, 32)); - // const buffer = Buffer.alloc(8); - // buffer.writeUInt32BE(timestamp, 0); - // buffer.writeUInt32BE(random, 4); - // const msgId = BigInt("0x" + buffer.toString('hex')).toString(); - // return msgId; - // } + function generateMsgId() { + const timestamp = Math.floor(Date.now() / 1000); + const random = Math.floor(Math.random() * Math.pow(2, 32)); + const buffer = Buffer.alloc(8); + buffer.writeUInt32BE(timestamp, 0); + buffer.writeUInt32BE(random, 4); + const msgId = BigInt("0x" + buffer.toString('hex')).toString(); + return msgId; + } // 此处有采用Hack方法 利用数据返回正确得到对应消息 // 与之前 Peer队列 MsgSeq队列 真正的MsgId并发不同 // 谨慎采用 目前测试暂无问题 Developer.Mlikiowa - let msgId = await NTQQMsgApi.getMsgUnique(peer.chatType, await NTQQMsgApi.getServerTime()); + let msgId: string; + try { + msgId = await NTQQMsgApi.getMsgUnique(peer.chatType, await NTQQMsgApi.getServerTime()); + } catch (error) { + //if (!napCatCore.session.getMsgService()['generateMsgUniqueId']) + //兜底识别策略V2 + msgId = generateMsgId().toString(); + } let data = await NTEventDispatch.CallNormalEvent< (msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map) => Promise, (msgList: RawMessage[]) => void diff --git a/src/onebot11/action/msg/SendMsg/create-send-elements.ts b/src/onebot11/action/msg/SendMsg/create-send-elements.ts index fe917dcd..e23b0356 100644 --- a/src/onebot11/action/msg/SendMsg/create-send-elements.ts +++ b/src/onebot11/action/msg/SendMsg/create-send-elements.ts @@ -27,7 +27,7 @@ async function handleOb11FileLikeMessage( { data: inputdata }: OB11MessageFileBase, { deleteAfterSentFiles }: MessageContext ) { - //有的奇怪的框架将url作为参数 而不是file 此时优先url + //有的奇怪的框架将url作为参数 而不是file 此时优先url 同时注意可能传入的是非file://开头的目录 By Mlikiowa const { path, isLocal, fileName, errMsg,success } = (await uri2local(inputdata?.url || inputdata.file)); if (!success) { diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 5b715653..bc23baae 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -224,7 +224,7 @@ export class OB11Constructor { //读取视频链接并兜底 let videoUrl;//Array if (msg.peerUin = '284840486') { - //合并消息内部 应该进行特殊处理 可能需要重写peer 待测试与研究 + //合并消息内部 应该进行特殊处理 可能需要重写peer 待测试与研究 Mlikiowa Taged TODO } try {