require("dotenv").config(); const { default: makeWASocket, DisconnectReason, useMultiFileAuthState, } = require("@whiskeysockets/baileys"); const qrcode = require("qrcode-terminal"); const pino = require("pino"); async function startWhatsApp() { try { console.log("šŸš€ Starting WhatsApp..."); const { state, saveCreds } = await useMultiFileAuthState("./auth"); const sock = makeWASocket({ auth: state, logger: pino({ level: "debug" }), printQRInTerminal: false, }); sock.ev.on("creds.update", saveCreds); sock.ev.on("connection.update", async (update) => { console.log("\n========== CONNECTION UPDATE =========="); console.log(JSON.stringify(update, null, 2)); const { connection, lastDisconnect, qr } = update; if (qr) { console.log("\nšŸ“± QR RECEIVED\n"); qrcode.generate(qr, { small: true }); } if (connection === "open") { console.log("āœ… WhatsApp Connected"); } if (connection === "connecting") { console.log("šŸ”„ Connecting..."); } if (connection === "close") { const statusCode = lastDisconnect?.error?.output?.statusCode; console.log( `āŒ Connection Closed. Status Code: ${statusCode}` ); console.error( "Disconnect Error:", lastDisconnect?.error ); const loggedOut = statusCode === DisconnectReason.loggedOut || statusCode === 401; if (!loggedOut) { console.log("šŸ”„ Reconnecting in 5 seconds..."); setTimeout(startWhatsApp, 5000); } else { console.log( "🚫 Logged out. Delete auth folder and rescan." ); } } }); sock.ev.on("messages.upsert", (msg) => { console.log( "šŸ“Ø Message Event:", JSON.stringify(msg, null, 2) ); }); } catch (err) { console.error("šŸ”„ Fatal Error"); console.error(err); console.log("šŸ”„ Restarting in 10 seconds..."); setTimeout(startWhatsApp, 10000); } } startWhatsApp();