whatsapp-api / index.js
ahdeveloperai777's picture
Update index.js
d270624 verified
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"));