const makeWASocket = require('@whiskeysockets/baileys').default; const { DisconnectReason, useMultiFileAuthState, fetchLatestBaileysVersion } = require('@whiskeysockets/baileys'); const fs = require('fs'); const path = require('path'); const Pino = require('pino'); const logger = Pino({ level: 'info' }); const store = {}; const getMessage = key => { const { id } = key; if (store[id]) return store[id].message; }; async function connectWhatsApp() { try { const { state, saveCreds } = await useMultiFileAuthState('auth'); const { version } = await fetchLatestBaileysVersion(); const sock = makeWASocket({ auth: state, version: version, getMessage, printQRInTerminal: false // Disable QR code }); // Request pairing code if not registered if (!sock.authState.creds.registered) { const phoneNumber = '+919709769655'; // Replace with your WhatsApp number try { const code = await sock.requestPairingCode(phoneNumber); console.log(`Pairing Code: ${code}`); console.log('Enter this code in WhatsApp under Linked Devices > Pair a New Device.'); } catch (error) { console.error('Error requesting pairing code:', error); } } sock.ev.on('connection.update', async (update) => { const { connection, lastDisconnect } = update; if (connection === 'close') { if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) { logger.info('Connection lost. Reconnecting...'); await connectWhatsApp(); } else { logger.info('Disconnected because you logged out.'); } } else if (connection === 'open') { logger.info('Connection established.'); } }); sock.ev.on('creds.update', async () => { try { await saveCreds(); logger.info('Credentials updated.'); } catch (error) { logger.error('Failed to save credentials:', error); } }); sock.ev.on('messages.upsert', async (events) => { const { messages } = events; messages.forEach(message => { const maskedNumber = maskPhoneNumber(message.key.remoteJid); logger.info(`Message from ${maskedNumber}:`, message); }); }); } catch (error) { logger.error('Failed to connect to WhatsApp:', error); } } function maskPhoneNumber(phoneNumber) { if (!phoneNumber) return phoneNumber; const parts = phoneNumber.split('@'); if (parts.length === 2) { const [number, domain] = parts; const maskedNumber = number.slice(0, 3) + '*****' + number.slice(-3); return `${maskedNumber}@${domain}`; } return phoneNumber; } // Ensure the auth directory exists const authDir = path.join(__dirname, 'auth'); if (!fs.existsSync(authDir)) { fs.mkdirSync(authDir, { recursive: true }); } connectWhatsApp();