fix: 无法获取 QRCode

dev/supplier-email-drawer
LiaoYijun 1 year ago
parent fdc7539864
commit 32d197121f

@ -3,12 +3,10 @@ const { isJidUser, isJidGroup, isJidBroadcast, jidEncode, jidDecode, S_WHATSAPP_
const formatPhoneNumber = number => { const formatPhoneNumber = number => {
if (number === null || number === undefined) return ''; if (number === null || number === undefined) return '';
if (isJidGroup(number)) { if (isJidGroup(number) || isJidBroadcast(number)) {
return number;
} else if (isJidBroadcast(number)) {
return number; return number;
} else { } else {
jidEncode(number, S_WHATSAPP_NET); return jidEncode(number, S_WHATSAPP_NET);
} }
}; };
@ -25,11 +23,18 @@ const parsePhoneNumber = number => {
// status: sent read delivered failed // status: sent read delivered failed
// 2 sent, 3 delivered, 4 read, 0 error // 2 sent, 3 delivered, 4 read, 0 error
const formatStatus = number => { const formatStatus = number => {
if (number === 2) return 'sent'; switch (number) {
else if (number === 3) return 'delivered'; case 2:
else if (number === 4) return 'read'; return 'sent';
else if (number === 0) return 'error'; case 3:
else return 'played'; return 'delivered';
case 4:
return 'read';
case 0:
return 'error';
default:
return 'played';
}
}; };
// Time: 2008-07-07 15:37:07 // Time: 2008-07-07 15:37:07
@ -38,7 +43,7 @@ const formatTimestamp = timestamp => {
const datetime = new Date(timestamp * 1000); 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 = { module.exports = {

@ -98,28 +98,30 @@ const createWhatsApp = async phone => {
waSocket.ev.on('connection.update', async update => { waSocket.ev.on('connection.update', async update => {
console.log('connection update: ', update); console.log('connection update: ', update);
const { connection, lastDisconnect, qr, isOnline } = update; const { connection, lastDisconnect, qr, isOnline } = update;
if (isOnline === true) {
resolve('');
}
if (connection === 'close') { if (connection === 'close') {
console.log('链接断开:', lastDisconnect); console.log('链接断开:', lastDisconnect);
if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) { if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) {
console.log('正在重连:'); console.log('正在重连:');
start(); start();
} else { } else {
waSocket.end(error => console.error('end.error: ', error)); waSocket.end(error => console.error('end.error: ', error));
waSocket.logout(msg => console.error('logout.msg: ', msg)); waSocket.logout(msg => console.error('logout.msg: ', msg));
console.log('Connection closed. You are logged out.'); console.log('Connection closed. You are logged out.');
waEmitter.emit('connection:close', {
whatsAppNo,
status: 'offline',
});
} }
} else if (connection === 'open') { } else if (connection === 'open') {
waEmitter.emit('connection.open', { waEmitter.emit('connection:open', {
whatsAppNo,
status: 'online', status: 'online',
}); });
waEmitter.emit('connection:open', { waEmitter.emit('connection:open', {
status: 'open', phone status: 'open', phone
}); });
resolve('');
} else if (qr !== undefined) { } else if (qr !== undefined) {
// WebSocket 创建成功等待扫码,如果没有扫码会更新 qr // WebSocket 创建成功等待扫码,如果没有扫码会更新 qr
resolve(qr); resolve(qr);
@ -149,8 +151,6 @@ const createWhatsApp = async phone => {
); );
// save to file // save to file
await writeFile('d:/my-download.jpeg', buffer); await writeFile('d:/my-download.jpeg', buffer);
console.log('writeFile', messageType);
} }
const fromWhatsAppNo = parsePhoneNumber(msg.key.remoteJid); const fromWhatsAppNo = parsePhoneNumber(msg.key.remoteJid);

@ -7,16 +7,16 @@ module.exports = async (ctx, next) => {
try { try {
console.log('forward start ---------------'); console.log('forward start ---------------');
// console.log(/^\/wai-server\/v\d{1}\/(?!channels|messages)/.test(ctx.path)); // console.log(/^\/wai-server\/v\d{1}\/(?!channels|messages)/.test(ctx.path));
const { waisession } = ctx.headers; // const { waisession } = ctx.headers;
if (isEmpty(waisession)) { // if (isEmpty(waisession)) {
await next(); // await next();
} else { // } else {
const findSession = await getConnection({ sesson_id: waisession, connect_domain: domain }); // const findSession = await getConnection({ sesson_id: waisession, connect_domain: domain });
if (!isEmpty(findSession)) { // if (!isEmpty(findSession)) {
// todo: 设置一个flag, 是否存在, 不用再查一遍 // // todo: 设置一个flag, 是否存在, 不用再查一遍
await next(); // }
} // }
} await next();
// todo: forward to target server // todo: forward to target server
console.log('forward End ---------------'); console.log('forward End ---------------');

Loading…
Cancel
Save