From 32d197121f4687880c4421549b51553411f9739b Mon Sep 17 00:00:00 2001 From: LiaoYijun Date: Wed, 25 Dec 2024 09:29:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=20Q?= =?UTF-8?q?RCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/common.js | 25 +++++++++++-------- wai-server/core/baileys/index.js | 16 ++++++------ .../components/forward.middleware.js | 20 +++++++-------- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/wai-server/core/baileys/common.js b/wai-server/core/baileys/common.js index 764b157..a0ebc76 100644 --- a/wai-server/core/baileys/common.js +++ b/wai-server/core/baileys/common.js @@ -3,12 +3,10 @@ const { isJidUser, isJidGroup, isJidBroadcast, jidEncode, jidDecode, S_WHATSAPP_ const formatPhoneNumber = number => { if (number === null || number === undefined) return ''; - if (isJidGroup(number)) { - return number; - } else if (isJidBroadcast(number)) { + if (isJidGroup(number) || isJidBroadcast(number)) { return number; } else { - jidEncode(number, S_WHATSAPP_NET); + return jidEncode(number, S_WHATSAPP_NET); } }; @@ -25,11 +23,18 @@ const parsePhoneNumber = number => { // status: sent read delivered failed // 2 sent, 3 delivered, 4 read, 0 error const formatStatus = number => { - if (number === 2) return 'sent'; - else if (number === 3) return 'delivered'; - else if (number === 4) return 'read'; - else if (number === 0) return 'error'; - else return 'played'; + switch (number) { + case 2: + return 'sent'; + case 3: + return 'delivered'; + case 4: + return 'read'; + case 0: + return 'error'; + default: + return 'played'; + } }; // Time: 2008-07-07 15:37:07 @@ -38,7 +43,7 @@ const formatTimestamp = timestamp => { const datetime = new Date(timestamp * 1000); - return datetime.getFullYear() + '-' + (datetime.getMonth() + 1) + '-' + datetime.getDay() + ' ' + datetime.getHours() + ':' + datetime.getMinutes() + ':' + datetime.getSeconds(); + return `${datetime.getFullYear()}-${datetime.getMonth() + 1}-${datetime.getDate()} ${datetime.getHours()}:${datetime.getMinutes()}:${datetime.getSeconds()}`; }; module.exports = { diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index 5b86833..6c3bf07 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -98,28 +98,30 @@ const createWhatsApp = async phone => { waSocket.ev.on('connection.update', async update => { console.log('connection update: ', update); const { connection, lastDisconnect, qr, isOnline } = update; - if (isOnline === true) { - resolve(''); - } + if (connection === 'close') { console.log('链接断开:', lastDisconnect); if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) { - console.log('正在重连:'); start(); } else { waSocket.end(error => console.error('end.error: ', error)); waSocket.logout(msg => console.error('logout.msg: ', msg)); console.log('Connection closed. You are logged out.'); + + waEmitter.emit('connection:close', { + whatsAppNo, + status: 'offline', + }); } } else if (connection === 'open') { - waEmitter.emit('connection.open', { + waEmitter.emit('connection:open', { + whatsAppNo, status: 'online', }); waEmitter.emit('connection:open', { status: 'open', phone }); - resolve(''); } else if (qr !== undefined) { // WebSocket 创建成功等待扫码,如果没有扫码会更新 qr resolve(qr); @@ -149,8 +151,6 @@ const createWhatsApp = async phone => { ); // save to file await writeFile('d:/my-download.jpeg', buffer); - - console.log('writeFile', messageType); } const fromWhatsAppNo = parsePhoneNumber(msg.key.remoteJid); diff --git a/wai-server/middleware/components/forward.middleware.js b/wai-server/middleware/components/forward.middleware.js index e0c74eb..a71a0ed 100644 --- a/wai-server/middleware/components/forward.middleware.js +++ b/wai-server/middleware/components/forward.middleware.js @@ -7,16 +7,16 @@ module.exports = async (ctx, next) => { try { console.log('forward start ---------------'); // console.log(/^\/wai-server\/v\d{1}\/(?!channels|messages)/.test(ctx.path)); - const { waisession } = ctx.headers; - if (isEmpty(waisession)) { - await next(); - } else { - const findSession = await getConnection({ sesson_id: waisession, connect_domain: domain }); - if (!isEmpty(findSession)) { - // todo: 设置一个flag, 是否存在, 不用再查一遍 - await next(); - } - } + // const { waisession } = ctx.headers; + // if (isEmpty(waisession)) { + // await next(); + // } else { + // const findSession = await getConnection({ sesson_id: waisession, connect_domain: domain }); + // if (!isEmpty(findSession)) { + // // todo: 设置一个flag, 是否存在, 不用再查一遍 + // } + // } + await next(); // todo: forward to target server console.log('forward End ---------------');