|
|
|
@ -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);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|