# WhatsApp Bot im Docker Container

Zuerst starten wir ein neues Node.js Projekt und installieren das WhatsApp Package:

npm init -y
npm i whatsapp-web.js qrcode-terminal

Danach erstellen wir eine index.js und binden unsere Packages ein:

//index.js
const fs = require('fs');
const qrcode = require('qrcode-terminal');
const { Client } = require('whatsapp-web.js');

Das Dateisystem (fs) benötigen wir um die Sessiondaten zu sichern. Den QR-Code-Terminal um den QR-Code auf der Console anzuzeigen.

Zuerst laden wir die Sessiondaten, wenn vorhanden, und instanzieren den Client.

//index.js
const SESSION_FILE_PATH = './session.json';
let sessionData;
if(fs.existsSync(SESSION_FILE_PATH)) {
    sessionData = require(SESSION_FILE_PATH);
}

const client = new Client({
    session: sessionData
});

Wenn keine Sessiondaten gefunden wurden, wird ein QR Code auf der Console erzeugt, welcher mit dem Smartphone gescannt werden muss.

//index.js
client.on('qr', qr => {
    qrcode.generate(qr, {small: true});
});

Ist der Bot geladen, wird das ready Event ausgeführt, in der wir uns eine Consolen-Ausgabe anzeigen:

//index.js
client.on('ready', async () => {
    console.log('Client is ready!');
});

client.initialize();

Im Message Event können wir auf neue Nachrichten reagieren:

//index.js
client.on('message', async message => {
    client.sendMessage(message.from, 'Vielen Dank für deine Nachricht.');
});

Nach der Initalisierung des Clients können wir auch auf vergangene Nachrichten zugreifen und darauf reagieren:

const chats = await client.getChats();
for(let chat of chats){

    let messages = await chat.fetchMessages();

    for(let message of messages){
        console.info(message);
    }
}
Last Updated: 9/6/2021, 9:06:41 PM