Spaces:
Building
Building
const makeWASocket = require('@whiskeysockets/baileys').default; | |
const { | |
DisconnectReason, | |
useMultiFileAuthState, | |
fetchLatestBaileysVersion | |
} = require('@whiskeysockets/baileys'); | |
const fs = require('fs'); | |
const path = require('path'); | |
const Pino = require('pino'); | |
const logger = Pino({ level: 'info' }); | |
const store = {}; | |
const getMessage = key => { | |
const { id } = key; | |
if (store[id]) return store[id].message; | |
}; | |
async function connectWhatsApp() { | |
try { | |
const { state, saveCreds } = await useMultiFileAuthState('auth'); | |
const { version } = await fetchLatestBaileysVersion(); | |
const sock = makeWASocket({ | |
auth: state, | |
version: version, | |
getMessage, | |
printQRInTerminal: false // Disable QR code | |
}); | |
// Request pairing code if not registered | |
if (!sock.authState.creds.registered) { | |
const phoneNumber = '+919709769655'; // Replace with your WhatsApp number | |
try { | |
const code = await sock.requestPairingCode(phoneNumber); | |
console.log(`Pairing Code: ${code}`); | |
console.log('Enter this code in WhatsApp under Linked Devices > Pair a New Device.'); | |
} catch (error) { | |
console.error('Error requesting pairing code:', error); | |
} | |
} | |
sock.ev.on('connection.update', async (update) => { | |
const { connection, lastDisconnect } = update; | |
if (connection === 'close') { | |
if (lastDisconnect?.error?.output?.statusCode !== DisconnectReason.loggedOut) { | |
logger.info('Connection lost. Reconnecting...'); | |
await connectWhatsApp(); | |
} else { | |
logger.info('Disconnected because you logged out.'); | |
} | |
} else if (connection === 'open') { | |
logger.info('Connection established.'); | |
} | |
}); | |
sock.ev.on('creds.update', async () => { | |
try { | |
await saveCreds(); | |
logger.info('Credentials updated.'); | |
} catch (error) { | |
logger.error('Failed to save credentials:', error); | |
} | |
}); | |
sock.ev.on('messages.upsert', async (events) => { | |
const { messages } = events; | |
messages.forEach(message => { | |
const maskedNumber = maskPhoneNumber(message.key.remoteJid); | |
logger.info(`Message from ${maskedNumber}:`, message); | |
}); | |
}); | |
} catch (error) { | |
logger.error('Failed to connect to WhatsApp:', error); | |
} | |
} | |
function maskPhoneNumber(phoneNumber) { | |
if (!phoneNumber) return phoneNumber; | |
const parts = phoneNumber.split('@'); | |
if (parts.length === 2) { | |
const [number, domain] = parts; | |
const maskedNumber = number.slice(0, 3) + '*****' + number.slice(-3); | |
return `${maskedNumber}@${domain}`; | |
} | |
return phoneNumber; | |
} | |
// Ensure the auth directory exists | |
const authDir = path.join(__dirname, 'auth'); | |
if (!fs.existsSync(authDir)) { | |
fs.mkdirSync(authDir, { recursive: true }); | |
} | |
connectWhatsApp(); |