From 03127e39102544665c0b1c369262120ca073777e Mon Sep 17 00:00:00 2001 From: LiaoYijun Date: Thu, 26 Dec 2024 15:12:52 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BA=8C=E7=BB=B4=E7=A0=81=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E5=90=8E=E9=80=80=E5=87=BA=20WA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/index.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index d1189fc..de39d03 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -44,6 +44,7 @@ waEmitter.on('connection:close', event => { const createWhatsApp = async phone => { let waSocket = null; + let qrCode = null; const channelId = generateId(); const whatsAppNo = phone; const { state, saveCreds } = await useMultiFileAuthState('baileys_auth_info/' + phone + '_' + channelId); @@ -254,22 +255,32 @@ const createWhatsApp = async phone => { const { connection, lastDisconnect, qr } = update; if (connection === 'close') { - // waSocket.end(error => console.error('end.error: ', error)); - // waSocket.logout(msg => console.error('logout.msg: ', msg)); - console.log('Connection closed: ', lastDisconnect); + if((lastDisconnect?.error)?.output?.statusCode !== DisconnectReason.loggedOut) { + start(); + } else { + console.log('Connection closed: ', lastDisconnect); - waEmitter.emit('connection:close', { - whatsAppNo, - status: 'offline', - }); + waEmitter.emit('connection:close', { + whatsAppNo, + status: 'offline', + }); + } } else if (connection === 'open') { + // 扫码成功后向这个群发消息,后续就能使用 API 发送了。 + sendTextMessage('120363363417115199@g.us', whatsAppNo + ' 扫码成功:' + new Date().toString()); waEmitter.emit('connection:open', { status: 'open', whatsAppNo }); } else if (qr !== undefined) { // WebSocket 创建成功等待扫码,如果没有扫码会更新 qr // 第一次一分钟,后面是 20 秒更新一次 - resolve(qr); + if (qrCode === null) { + qrCode = qr; + resolve(qr); + } else { + waSocket.logout(() => '二维码已过期'); + } + } });