const express = require('express'); const { default: makeWASocket, useMultiFileAuthState, DisconnectReason, downloadMediaMessage } = require('@whiskeysockets/baileys'); const { Boom } = require('@hapi/boom'); const qrcode = require('qrcode-terminal'); const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const path = require('path'); const { writeFile } = require('fs/promises'); const { passtoGemini, passtoLENSOCR } = require("./utils"); // Create an instance of Express const app = express(); const PORT = 7860; var flag = false; // Middleware to parse JSON app.use(express.json()); // Define a sample route app.get('/', (req, res) => { res.send('Express server is running!'); }); // Start the Express server app.listen(PORT, () => { console.log(`Express server is running on http://localhost:${PORT}`); }); async function startSock() { const { state, saveCreds } = await useMultiFileAuthState('auth_info_baileys'); const sock = makeWASocket({ auth: state, printQRInTerminal: true, }); sock.ev.on('creds.update', saveCreds); sock.ev.on('connection.update', (update) => { const { connection, lastDisconnect, qr } = update; if (qr) { qrcode.generate(qr, { small: true }); } if (connection === 'close') { const shouldReconnect = (lastDisconnect.error = Boom)?.output?.statusCode !== DisconnectReason.loggedOut; console.log('Connection closed due to', lastDisconnect.error, ', reconnecting', shouldReconnect); // Reconnect if not logged out if (shouldReconnect) { startSock(); } } else if (connection === 'open') { console.log('Connected to WhatsApp'); } }); sock.ev.on('messages.upsert', async (message) => { try { const msg = message.messages[0]; if (!msg.message) return; console.log('Message:', msg.message.conversation); if(msg.message.conversation.includes("/start")){ await sock.sendMessage(msg.key.remoteJid, { text: "Bot Started" }); flag = true; return; } if(msg.message.conversation.includes("/stop")){ await sock.sendMessage(msg.key.remoteJid, { text: "Bot Stopped" }); flag = false; return; } if(!flag){ return; } const messageType = Object.keys(msg.message)[0]; if (messageType === 'imageMessage') { const sender = msg.key.participant || msg.key.remoteJid; if (!fs.existsSync('./images')) { fs.mkdirSync('./images'); } var fileName = `./images/${Date.now()}_${sender.replace('@s.whatsapp.net', '')}`; var extension = msg.message.imageMessage.mimetype.split('/')[1]; fileName = fileName + '.' + extension; const buffer = await downloadMediaMessage(msg, 'buffer', {}); await writeFile(fileName, buffer); var d = await passtoGemini(fileName); var text = d.split("SPACESPACESPACE"); await sock.sendMessage(msg.key.remoteJid, { text: text[0] }); await sock.sendMessage(msg.key.remoteJid, { text: text[1] }); } } catch (error) { console.error('Error in m essage upsert:', error); } }); } startSock();