mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
refactor: 转发消息修复
This commit is contained in:
parent
5cc5149aed
commit
8db294efe6
@ -163,7 +163,10 @@ export class NTQQMsgApi {
|
|||||||
}
|
}
|
||||||
static async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
static async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) {
|
||||||
let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime());
|
let msgId = await NTQQMsgApi.getMsgUnique(await NTQQMsgApi.getServerTime());
|
||||||
let data = await NTEventDispatch.CallNormalEvent<(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>, (msgList: RawMessage[]) => void>(
|
let data = await NTEventDispatch.CallNormalEvent<
|
||||||
|
(msgId: string, peer: Peer, msgElements: SendMessageElement[], map: Map<any, any>) => Promise<unknown>,
|
||||||
|
(msgList: RawMessage[]) => void
|
||||||
|
>(
|
||||||
'NodeIKernelMsgService/sendMsg',
|
'NodeIKernelMsgService/sendMsg',
|
||||||
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
||||||
1,
|
1,
|
||||||
@ -249,39 +252,79 @@ export class NTQQMsgApi {
|
|||||||
static async forwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]) {
|
static async forwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]) {
|
||||||
return napCatCore.session.getMsgService().forwardMsg(msgIds, srcPeer, [destPeer], new Map());
|
return napCatCore.session.getMsgService().forwardMsg(msgIds, srcPeer, [destPeer], new Map());
|
||||||
}
|
}
|
||||||
|
|
||||||
static async multiForwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]): Promise<RawMessage> {
|
static async multiForwardMsg(srcPeer: Peer, destPeer: Peer, msgIds: string[]): Promise<RawMessage> {
|
||||||
const msgInfos = msgIds.map(id => {
|
const msgInfos = msgIds.map(id => {
|
||||||
return { msgId: id, senderShowName: selfInfo.nick };
|
return { msgId: id, senderShowName: selfInfo.nick };
|
||||||
});
|
});
|
||||||
|
let data = await NTEventDispatch.CallNormalEvent<
|
||||||
return new Promise((resolve, reject) => {
|
(msgInfo: typeof msgInfos, srcPeer: Peer, destPeer: Peer, comment: Array<any>, attr: Map<any, any>,) => Promise<unknown>,
|
||||||
let complete = false;
|
(msgList: RawMessage[]) => void
|
||||||
const onSentCB = (msg: RawMessage) => {
|
>(
|
||||||
|
'NodeIKernelMsgService/multiForwardMsgWithComment',
|
||||||
|
'NodeIKernelMsgListener/onMsgInfoListUpdate',
|
||||||
|
1,
|
||||||
|
5000,
|
||||||
|
(msgRecords: RawMessage[]) => {
|
||||||
|
for (let msgRecord of msgRecords) {
|
||||||
|
if (msgRecord.peerUid == destPeer.peerUid && msgRecord.senderUid == selfInfo.uid) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
msgInfos,
|
||||||
|
srcPeer,
|
||||||
|
destPeer,
|
||||||
|
[],
|
||||||
|
new Map()
|
||||||
|
);
|
||||||
|
for (let msg of data[1]) {
|
||||||
const arkElement = msg.elements.find(ele => ele.arkElement);
|
const arkElement = msg.elements.find(ele => ele.arkElement);
|
||||||
if (!arkElement) {
|
if (!arkElement) {
|
||||||
// log("收到的不是转发消息")
|
continue;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
const forwardData: any = JSON.parse(arkElement.arkElement.bytesData);
|
const forwardData: any = JSON.parse(arkElement.arkElement.bytesData);
|
||||||
if (forwardData.app != 'com.tencent.multimsg') {
|
if (forwardData.app != 'com.tencent.multimsg') {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
if (msg.peerUid == destPeer.peerUid && msg.senderUid == selfInfo.uid) {
|
if (msg.peerUid == destPeer.peerUid && msg.senderUid == selfInfo.uid) {
|
||||||
complete = true;
|
return msg;
|
||||||
resolve(msg);
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
sentMsgTasks.set(randomUUID(), onSentCB);
|
|
||||||
setTimeout(() => {
|
|
||||||
if (!complete) {
|
|
||||||
reject('转发消息超时');
|
|
||||||
}
|
}
|
||||||
}, 5000);
|
throw new Error('转发消息超时');
|
||||||
napCatCore.session.getMsgService().multiForwardMsgWithComment(msgInfos, srcPeer, destPeer, [], new Map());
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
// static async multiForwardMsg2(srcPeer: Peer, destPeer: Peer, msgIds: string[]): Promise<RawMessage> {
|
||||||
|
// const msgInfos = msgIds.map(id => {
|
||||||
|
// return { msgId: id, senderShowName: selfInfo.nick };
|
||||||
|
// });
|
||||||
|
|
||||||
|
// return new Promise((resolve, reject) => {
|
||||||
|
// let complete = false;
|
||||||
|
// const onSentCB = (msg: RawMessage) => {
|
||||||
|
// const arkElement = msg.elements.find(ele => ele.arkElement);
|
||||||
|
// if (!arkElement) {
|
||||||
|
// // log("收到的不是转发消息")
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// const forwardData: any = JSON.parse(arkElement.arkElement.bytesData);
|
||||||
|
// if (forwardData.app != 'com.tencent.multimsg') {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// if (msg.peerUid == destPeer.peerUid && msg.senderUid == selfInfo.uid) {
|
||||||
|
// complete = true;
|
||||||
|
// resolve(msg);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// sentMsgTasks.set(randomUUID(), onSentCB);
|
||||||
|
// setTimeout(() => {
|
||||||
|
// if (!complete) {
|
||||||
|
// reject('转发消息超时');
|
||||||
|
// }
|
||||||
|
// }, 5000);
|
||||||
|
// napCatCore.session.getMsgService().multiForwardMsgWithComment(msgInfos, srcPeer, destPeer, [], new Map());
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// }
|
||||||
static async markallMsgAsRead() {
|
static async markallMsgAsRead() {
|
||||||
return napCatCore.session.getMsgService().setAllC2CAndGroupMsgRead();
|
return napCatCore.session.getMsgService().setAllC2CAndGroupMsgRead();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user