diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index de39d03..8054d92 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -22,13 +22,6 @@ logger.level = 'trace'; const msgRetryCounterCache = new NodeCache(); -const store = makeInMemoryStore({ logger }); -store?.readFromFile('./baileys_store_multi.json'); -// save every 10s -setInterval(() => { - store?.writeToFile('./baileys_store_multi.json'); -}, 10_000); - waEmitter.on('message:updated', event => { console.info('msg:evt:updated', event); }); @@ -47,6 +40,14 @@ const createWhatsApp = async phone => { let qrCode = null; const channelId = generateId(); const whatsAppNo = phone; + + const storeFilename = './baileys_auth_info/baileys_store_' + phone + '_' + channelId + '.json' + const store = makeInMemoryStore({ logger }); + store?.readFromFile(storeFilename); + // save every 10s + setInterval(() => { + store?.writeToFile(storeFilename); + }, 10_000); const { state, saveCreds } = await useMultiFileAuthState('baileys_auth_info/' + phone + '_' + channelId); // fetch latest version of WA Web const { version, isLatest } = await fetchLatestBaileysVersion(); @@ -234,6 +235,10 @@ const createWhatsApp = async phone => { } } + const handleCredsUpdate = async messageUpdate => { + await saveCreds(); + } + const start = () => { return new Promise(resolve => { waSocket = makeWASocket({ @@ -250,6 +255,10 @@ const createWhatsApp = async phone => { generateHighQualityLinkPreview: false, syncFullHistory: false, }); + + // 需要在创建 Socket 后马上绑定 + store?.bind(waSocket.ev); + waSocket.ev.on('connection.update', async update => { console.log('connection update: ', update); const { connection, lastDisconnect, qr } = update; @@ -284,20 +293,9 @@ const createWhatsApp = async phone => { } }); + waSocket.ev.on('creds.update', handleCredsUpdate); waSocket.ev.on('messages.upsert', handleMessagesUpsert); waSocket.ev.on('messages.update', handleMessagesUpdate); - - waSocket.ev.on('group-participants.update', async GroupMetadata => { - console.info('group-participants.update: ', GroupMetadata); - }); - - waSocket.ev.on('creds.update', async () => { - console.info('creds.update'); - await saveCreds(); - }); - - // 不绑定不会影响扫码登录 - store?.bind(waSocket.ev); }); };