From 24cb081232a6a96c200e816e29dfb1f1b5f77fe6 Mon Sep 17 00:00:00 2001 From: LiaoYijun Date: Tue, 24 Dec 2024 10:54:10 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=A2=9E=E5=8A=A0=20WA=20messages.upda?= =?UTF-8?q?te=20=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/index.js | 35 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index 63fefab..a8b0f62 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -31,11 +31,14 @@ setInterval(() => { store?.writeToFile('./baileys_store_multi.json') }, 10_000) +waEmitter.on('message:updated', event => { console.info('msg:event', event)}) +waEmitter.on('message:received', event => { console.info('msg:event', event)}) + // start a connection const createWhatsApp = async (phone) => { const channelId = generateId() const whatsAppNo = phone - const { state, saveCreds } = await useMultiFileAuthState('baileys_auth_info/' + phone + '_' + channelId) + const { state, saveCreds } = await useMultiFileAuthState('baileys_auth_info/' + phone) // fetch latest version of WA Web const { version, isLatest } = await fetchLatestBaileysVersion() const waVersion = version.join('.') + ', ' + (isLatest ? 'latest' : 'out') @@ -181,7 +184,6 @@ const createWhatsApp = async (phone) => { if (msg.key.fromMe) { waEmitter.emit('message:updated', { "id": msg.key.id, - "wamid": msg.key.id, "status": formatStatus(msg.status), "from": whatsAppNo, "to": fromWhatsAppNo, @@ -193,16 +195,11 @@ const createWhatsApp = async (phone) => { id: parsePhoneNumber(msg.key.participant), name: msg.pushName }, - "createTime": formatTimestamp(msg.messageTimestamp), - "updateTime": formatTimestamp(new Date().getTime()), - "sendTime": formatTimestamp(msg.messageTimestamp), - "deliverTime": formatTimestamp(msg.messageTimestamp), - "readTime": formatTimestamp(msg.messageTimestamp), + "updateTime": formatTimestamp(msg.messageTimestamp), }); } else { waEmitter.emit('message:received', { "id": msg.key.id, - "wamid": msg.key.id, "status": "", "from": fromWhatsAppNo, "to": whatsAppNo, @@ -215,10 +212,6 @@ const createWhatsApp = async (phone) => { name: msg.pushName }, "createTime": formatTimestamp(msg.messageTimestamp), - "updateTime": formatTimestamp(new Date().getTime()), - "sendTime": formatTimestamp(msg.messageTimestamp), - "deliverTime": formatTimestamp(msg.messageTimestamp), - "readTime": formatTimestamp(msg.messageTimestamp), }); } } @@ -226,6 +219,24 @@ const createWhatsApp = async (phone) => { } }) + waSocket.ev.on('messages.update', async (messageUpdate) => { + console.info('messages.update: ', messageUpdate) + + for (const msg of messageUpdate) { + waEmitter.emit('message:updated', { + "id": msg.key.id, + "status": formatStatus(msg.update.status), + "from": msg.key.fromMe ? whatsAppNo : parsePhoneNumber(msg.key.remoteJid), + "to": msg.key.fromMe ? parsePhoneNumber(msg.key.remoteJid) : whatsAppNo, + participant: { + id: parsePhoneNumber(msg.key.participant), + name: msg.pushName + }, + "updateTime": formatTimestamp(new Date().getTime() / 1000), + }); + } + }) + // 不绑定不会影响扫码登录 store?.bind(waSocket.ev)