const { Client, LocalAuth } = require('whatsapp-web.js') const qrcode = require('qrcode-terminal') // Initialize client with session persistence const client = new Client({ authStrategy: new LocalAuth(), // Saves session so you don't need to scan QR every time puppeteer : { headless: true, args : ['--no-sandbox', '--disable-setuid-sandbox'] } }) // Generate QR in terminal client.on('qr', (qr) => { console.log('\nπŸ“± Scan this QR code with WhatsApp:') qrcode.generate(qr, { small: true }) }) // When client is ready /*client.on('ready', () => { console.log('\nβœ… Client is ready!') console.log('Listening for messages...') console.log('Use Ctrl+C to exit\n') })*/ client.on('ready', async () => { console.log('\nβœ… Client is ready!') // Auto-reply to the last person who messaged you let lastContact = null var currentTimeAndDateTodayAsDutchh = new Date().toLocaleString('nl-NL', { timeZone: 'Europe/Amsterdam' }) await sendMessage('31639266516@c.us', currentTimeAndDateTodayAsDutchh + 'Yoo toppertje πŸŽ‰!') client.on('message', (message) => { console.log(`πŸ“₯ [${ message.from }] ${ message.body }`) lastContact = message.from.split('@')[0] // Extract number // Send after 10 seconds setTimeout(async () => { if (lastContact) { console.log(`\nSending test to ${ lastContact }...`) await sendMessage(lastContact, 'Yooo toppertjeπŸŽ‰!') } else console.log('No last contact found') }, 2000) }) }) // Listen for incoming messages client.on('message', (message) => { console.log(`πŸ“₯ [${ message.from }] ${ message.body || '(media message)' }`) // Auto-reply example if (message.body.toLowerCase() === 'ping') { message.reply('πŸ“ Pong!') console.log(' Replied with "Pong!"') } }) // Function to send messages const sendMessage = async (number, text) => { try { const chatId = number.includes('@c.us') ? number : `${ number }@c.us` await client.sendMessage(chatId, text) console.log(`βœ… Sent to ${ number }: "${ text }"`) return true } catch (error) { console.error(`❌ Error sending to ${ number }:`, error.message) return false } } // Export for external use module.exports = { client, sendMessage } // Initialize client client.initialize() // Graceful shutdown process.on('SIGINT', async () => { console.log('\nπŸ›‘ Shutting down...') await client.destroy() process.exit(0) })