Spaces:
Running
Running
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(); | |