const { Client, LocalAuth } = require('whatsapp-web.js'); const express = require('express'); const qrcode = require('qrcode'); const app = express(); app.use(express.json()); let lastQr = ""; let isReady = false; // Wir speichern die Session im /data Ordner des Add-ons const client = new Client({ authStrategy: new LocalAuth({ dataPath: '/data/auth' }), puppeteer: { executablePath: '/usr/bin/chromium-browser', args: ['--no-sandbox', '--disable-setuid-sandbox'] } }); client.on('qr', (qr) => { lastQr = qr; console.log('Neuer QR Code generiert. Bitte in der Web UI scannen.'); }); client.on('ready', () => { isReady = true; lastQr = ""; console.log('WhatsApp ist bereit!'); }); // Webseite für den QR-Code (Ingress) app.get('/', async (req, res) => { if (isReady) { res.send('

WhatsApp ist verbunden! ✅

'); } else if (lastQr) { const qrImage = await qrcode.toDataURL(lastQr); res.send(`

WhatsApp Login

Scanne den Code mit deinem Handy:

`); } else { res.send('

Warte auf QR-Code...

Das kann beim ersten Start einen Moment dauern.

'); } }); // API-Endpunkt zum Senden app.post('/send', async (req, res) => { const { number, message } = req.body; if (!isReady) return res.status(503).json({ error: 'Client nicht bereit' }); try { const chatId = number.includes('@c.us') ? number : `${number}@c.us`; await client.sendMessage(chatId, message); res.json({ success: true }); } catch (err) { res.status(500).json({ error: err.message }); } }); client.initialize(); app.listen(3000, () => console.log('Add-on Server läuft auf Port 3000'));