From a2ee75b113136f634a3d460c13d75959bab74344 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Sun, 9 Jun 2024 15:27:33 +0800 Subject: [PATCH] refactor: sent msg status waiter --- src/main/main.ts | 5 +++++ src/ntqqapi/api/msg.ts | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/main.ts b/src/main/main.ts index d713a69..6fc578d 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -56,6 +56,7 @@ import { getConfigUtil } from '../common/config' import { checkFfmpeg } from '../common/utils/video' import { GroupDecreaseSubType, OB11GroupDecreaseEvent } from '../onebot11/event/notice/OB11GroupDecreaseEvent' import '../ntqqapi/native/wrapper' +import { sentMessages } from '@/ntqqapi/api' let running = false @@ -227,6 +228,10 @@ function onLoad() { const recallMsgIds: string[] = [] // 避免重复上报 registerReceiveHook<{ msgList: Array }>([ReceiveCmdS.UPDATE_MSG], async (payload) => { for (const message of payload.msgList) { + const sentMessage = sentMessages[message.msgId] + if (sentMessage){ + Object.assign(sentMessage, message) + } log('message update', message.msgId, message) if (message.recallTime != '0') { if (recallMsgIds.includes(message.msgId)) { diff --git a/src/ntqqapi/api/msg.ts b/src/ntqqapi/api/msg.ts index a91a8dd..54ca551 100644 --- a/src/ntqqapi/api/msg.ts +++ b/src/ntqqapi/api/msg.ts @@ -7,7 +7,9 @@ import { log } from '../../common/utils/log' import { sleep } from '../../common/utils/helper' import { isQQ998 } from '../../common/utils' -export let sendMessagePool: Record void) | null> = {} // peerUid: callbackFunnc +export let sendMessagePool: Record void) | null> = {} // peerUid: callbackFunc + +export let sentMessages: Record = {} // msgId: RawMessage export interface Peer { chatType: ChatType @@ -40,17 +42,20 @@ async function sendWaiter(peer: Peer, waitComplete = true, timeout: number = 100 sendMessagePool[peerUid] = async (rawMessage: RawMessage) => { delete sendMessagePool[peerUid] sentMessage = rawMessage + sentMessages[rawMessage.msgId] = rawMessage } let checkSendCompleteUsingTime = 0 const checkSendComplete = async (): Promise => { if (sentMessage) { if (waitComplete) { - if ((await dbUtil.getMsgByLongId(sentMessage.msgId)).sendStatus == 2) { + if (sentMessage.sendStatus == 2) { + delete sentMessages[sentMessage.msgId] return sentMessage } } else { + delete sentMessages[sentMessage.msgId] return sentMessage } // log(`给${peerUid}发送消息成功`)