Whatsapp Bot starter code
1 Pastikan komponen berikut telah terinstall:
- node.js
2 inisialisasi project dan Instal dependencies
Buat folder project kemudia melalui code editor masukkan ke folder project tersebut. kemudian buka terminal, lalu ketikkan kode berikut:
sudo yum install npm- (install nodel modules)
npm init -y- inisialisasi project
npm i whatsapp-web.js- (install whatsapp js untuk whatsapp bot)
npm i qrcode-terminal- install qrcode untuk scan qr untuk menautkan akun whatsapp
npm i -g nodemon- agar code restart otomatis ketika ada perubahan kode
npm i puppeteernpm install puppeteer@19.7.5(stable version)- puppeter sudah include di whatsapp-web.js
to removenpm uninstall puppeteer- jika dikemudian hari whatsappweb atau nodehtml to image tidak berfungsi dengan baik karena puppeteer error update saja library whatsappweb.js atau/dan node-html-to-image ke version terbaru
npm i node-html-to-image- konversi html ke image
npm i axios- untuk komunikasi dengan api
npm i mysql- untuk komunikasi dengan mysql database
3 struktur file package.json,
setelah melakukan hal diatas struktur filenya akan menjadi seperti berikut
- nama aplikasi : bot-wa
- script yg pertama di run nodemon app.js
- dependencies pihak ketiga yang terinstall:
- axios
- mysql
- node-html-to-image
- puppeteer
- qrcode-terminal
- whatsapp-web.js
{
"name": "bot-wa",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^1.3.3",
"mysql": "^2.18.1",
"node-html-to-image": "^3.3.0",
"puppeteer": "^19.7.0",
"qrcode-terminal": "^0.12.0",
"whatsapp-web.js": "^1.19.4"
}
}
4 Buat file app.js
masukkan starter code berikut
const qrcode = require('qrcode-terminal')
const fs = require('fs')
const { Client, LegacySessionAuth, LocalAuth, MessageMedia } = require('whatsapp-web.js')
const client = new Client({
authStrategy: new LocalAuth({
clientId: "client-one"
}),
puppeteer: { headless: true,args: ['--no-sandbox', '--disable-setuid-sandbox']}
})
// Save session values to the file upon successfull auth
client.on('authenticated', (session) => {
console.log(session)
})
client.initialize()
client.on("qr", qr => {
qrcode.generate(qr, {small: true} )
})
client.on('ready', () => {
console.log("ready to message")
})
client.on('message', message => {
if(message.body == '!ping') {
message.reply('pong')
}
})pada code line 26-28 ketika kita mendapatkan pesan !ping maka wabot akan membalas dengan text ‘pong’. silahkan modifikasi atau kode tersebut sesuai kebutuhan.
code line tersebut menerima semua pesan baik dari group, atau personal chat. olehnya itu anda membuat pengkondisian terlebih dahulu agar yang dieksekusi hanya pesan personal saja atau group tertentu saja.
catatan
Berikut struktur isi dari variabel message :
anda dapat melakukan modifikasi kode sesuai kebutuhan dengan melihat struktur isi variabel tersebut.


5 Run project
ketikkan kode berikut pada terminal npm run start
kemudian akan muncul qrcode, silahkan tautkan whatsapp pada smartphone anda dengan menscan qr code tersebut

demikian
reference:
- https://www.youtube.com/watch?v=edFR45MYPek
- https://wwebjs.dev/guide/