wa_placement / index.js
GitHub Actions
Initial commit
6b18c86
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();