From ec8b65b6ccc207b85dda3ad44a6f539e44d89c6d Mon Sep 17 00:00:00 2001 From: Jimmy Date: Tue, 31 Dec 2024 22:21:51 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=88=A0=E9=99=A4=E8=87=AA=E6=B5=8B?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9B=E5=88=A0=E9=99=A4=E7=9B=91=E5=90=AC?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=EF=BC=9B=E5=A2=9E=E5=8A=A0=20TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/index.js | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index 5388e6a..6ee7c7b 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -18,27 +18,12 @@ const generateId = require('../../utils/generateId.util'); const NodeCache = require('node-cache'); const P = require('pino'); -waEmitter.on('message:updated', event => { - console.info('msg:evt:updated', event); -}); -waEmitter.on('message:received', event => { - console.info('msg:evt:received', event); -}); -waEmitter.on('connection:open', event => { - console.info('con:evt.open', event); -}); -waEmitter.on('connection:close', event => { - console.info('con:evt.close', event); -}); - const createWhatsApp = async phone => { - // let waSocket = null; let qrCode = null; - let connectionStatus = 'offline' const channelId = generateId(); const whatsAppNo = phone; // 储存键值对 msgId-externalId - // TODO 什么时候清理旧的? + // TODO 使用 NodeCache 储存,设置有效期。⬇️ const msgIdMap = new Map(); const logger = P({ timestamp: () => `,"time":"${new Date().toJSON()}"` }, P.destination('./wa-logs-' + phone + '_' + channelId + '.txt')); logger.level = 'trace'; @@ -72,13 +57,10 @@ const createWhatsApp = async phone => { const fromWhatsAppNo = parsePhoneNumber(msg.key.remoteJid); if (msg.message?.conversation || msg.message?.extendedTextMessage?.text) { - const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text; - - if (text.indexOf('「自~测」') > -1) { - sendTextMessage(fromWhatsAppNo, '这是自测消息:' + new Date().toString()); - } + const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text; const externalId = msgIdMap.get(msg.key.id); + if (msg.key.fromMe) { waEmitter.emit('message:updated', { id: msg.key.id, @@ -296,9 +278,10 @@ const createWhatsApp = async phone => { status: 'open', whatsAppNo, channelId, eventSource: serverConfig.name + '.connection.update.open', }); + // 考虑迁移到 connection.update 事件之外,测试看是否能发送消息? waEmitter.on('request.' + whatsAppNo + '.send.text', event => { const {to: number, externalId, content} = event; - console.info('request.' + whatsAppNo + '.send.message:', event) + console.info('request.' + whatsAppNo + '.send.text:', event) // const jid = formatPhoneNumber(event.to); waSocket.sendMessage( number + '@s.whatsapp.net', { text: content } @@ -318,11 +301,10 @@ const createWhatsApp = async phone => { updateTime: formatTimestamp(new Date().getTime() / 1000), }); }); - //sendTextMessage(number, content, externalId); }); waEmitter.on('request.' + whatsAppNo + '.send.image', event => { - const {to: number, externalId, content} = event; + const {to: number, externalId, imageUrl} = event; const jid = formatPhoneNumber(event.to); waSocket.sendMessage( jid, {image: { url: imageUrl }} @@ -348,7 +330,6 @@ const createWhatsApp = async phone => { // 第一次一分钟,后面是 20 秒更新一次 if (qrCode === null) { qrCode = qr; - console.info('qr: ', qr); waEmitter.emit('creds:update', { id: generateId(), qr, whatsAppNo,