| 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(); |