const { default: makeWASocket, useMultiFileAuthState, fetchLatestBaileysVersion, DisconnectReason } = require('@whiskeysockets/baileys'); const express = require('express'); const qrcode = require('qrcode-terminal'); const pino = require('pino'); const app = express(); app.use(express.json()); async function startWA() { const { state, saveCreds } = await useMultiFileAuthState('auth_state'); const { version } = await fetchLatestBaileysVersion(); console.log("Using WhatsApp Web Version:", version.join('.')); const sock = makeWASocket({ version, auth: state, logger: pino({ level: 'silent' }), // Hide messy logs browser: ["AutoFlowLearn", "Chrome", "1.0.0"], // DNS aur Connection issues ke liye settings connectTimeoutMs: 60000, defaultQueryTimeoutMs: 0, keepAliveIntervalMs: 10000, }); sock.ev.on('creds.update', saveCreds); sock.ev.on('connection.update', (update) => { const { connection, lastDisconnect, qr } = update; // Manual QR Handling (Fixed warning) if (qr) { console.clear(); console.log("----------------------------------------"); console.log("SCAN QR CODE BELOW:"); console.log("----------------------------------------"); qrcode.generate(qr, { small: true }); } if (connection === 'close') { const shouldReconnect = (lastDisconnect?.error)?.output?.statusCode !== DisconnectReason.loggedOut; console.log('❌ Connection closed due to ', lastDisconnect?.error, ', reconnecting: ', shouldReconnect); if (shouldReconnect) { // Thora wait karke dobara try karein agar network ka masla ho setTimeout(() => startWA(), 5000); } } else if (connection === 'open') { console.log("✅ WHATSAPP CONNECTED SUCCESSFULLY!"); } }); // API Endpoint for Python app.post('/send-otp', async (req, res) => { try { let { number, message } = req.body; let cleanNumber = number.replace(/\D/g, ''); if (cleanNumber.startsWith('03')) { cleanNumber = '92' + cleanNumber.substring(1); } const jid = cleanNumber + "@s.whatsapp.net"; await sock.sendMessage(jid, { text: message }); console.log(`✅ Message sent to ${cleanNumber}`); res.json({ success: true }); } catch (e) { console.error("❌ Send Error:", e.message); res.status(500).json({ error: e.message }); } }); app.get('/', (req, res) => res.send("WhatsApp OTP Service is Running!")); } // Start with error handling startWA().catch(err => { console.error("Critical Startup Error:", err); setTimeout(() => startWA(), 10000); // Retry after 10s }); app.listen(7860, () => console.log("🚀 Server running on Port 7860"));