Spaces:
Sleeping
Sleeping
| 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")); |