Pengantar
WhatsApp Messenger adalah aplikasi berbalas pesan lintas platform yang memungkinkan kita mengirim dan menerima pesan secara real time. WhatsApp Messenger digunakan oleh hampir semua orang di planet ini. Sayangnya, tidak seperti Telegram, penggunaan API Whatsapp masih dibatasi.
Dalam posting ini, kita akan membuat bot Whatsapp gratis dengan bantuan third-party library.

Library yang Diperlukan
Menginstal library dari npm membutuhkan instalasi node.js 12
atau lebih tinggi terlebih dahulu, diikuti dengan menginstal library dari paket npm.
Menginstal whatsapp-web.js
:
$ npm install whatsapp-web.js
or
$ yarn add whatsapp-web.js
Menginstal qrcode-terminal
:
$ npm install qrcode-terminal
or
$ yarn add qr-code-terminal
Cara Menjalankan Program
Buat file bernama app.js
dalam proyek dan tempel kode ini ke dalamnya.
const qrcode = require('qrcode-terminal');
const { Client } = require('whatsapp-web.js');
const client = new Client();
client.initialize();
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
client.on('ready', () => {
console.log('Client is ready!');
});
Kemudian, pada terminal atau command prompt, ketik perintah ini.
$ node app
or
$ node app.js
Saat perintah dijalankan, muncul kode QR, yang akan kita pindai dengan akun Whatsapp yang kita gunakan sebagai bot.

Membalas Pesan
Tujuan membuat bot adalah agar dapat merespons pesan. Jadi, dalam proyek yang kita buat sebelumnya, paste kode berikut.
const qrcode = require('qrcode-terminal');
const { Client } = require('whatsapp-web.js');
const client = new Client();
client.initialize();
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message', (message) => {
if (message.body === 'hello') {
message.reply('Hiiiii');
}
});
Saat orang lain mengetik pesan halo
ke bot, kita akan buat bot membalasnya.

Membuat Otentikasi
Fungsi dari pembuatan autentikasi adalah kita tidak perlu login (scan QR code) setiap kali menjalankan app.js
.
Berikut adalah kode untuk membuat otentikasi:
const qrcode = require('qrcode-terminal');
const { Client, LocalAuth } = require('whatsapp-web.js');
//menyimpan data otentikasi ke file
const client = new Client({
authStrategy: new LocalAuth(),
});
client.initialize();
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
client.on('authenticated', () => {
console.log('AUTHENTICATED');
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message', (message) => {
if (message.body === 'hello') {
message.reply('Hiiiii');
}
});
Membalas Pesan Dengan Gambar
Di sisi lain, bot kurang interaktif jika hanya membalas dengan pesan teks, jadi kita bisa membalas pesan menggunakan media seperti gambar.
Berikut adalah kode untuk membuat bot membalas dengan media gambar:
const qrcode = require('qrcode-terminal');
const { Client, LocalAuth, MessageMedia } = require('whatsapp-web.js');
const client = new Client({
authStrategy: new LocalAuth(),
});
client.initialize();
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
client.on('authenticated', () => {
console.log('AUTHENTICATED');
});
client.on('ready', () => {
console.log('Client is ready!');
});
//Membalas Pesan dengan gambar dari url
client.on('message', async (message) => {
if (message.body === 'meme') {
//mendapatkan media dari url
const media = await MessageMedia.fromUrl(
'https://user-images.githubusercontent.com/41937681/162612030-11575069-33c2-4df2-ab1b-3fb3cb06f4cf.png'
);
//membalas dengan media
client.sendMessage(message.from, media, {
caption: 'meme',
});
}
});
Kita akan membuat bot merespons dengan gambar setiap kali orang lain mengetik pesan meme
.

Implementasi dengan API Yu-Gi-oh
untuk membuktikan bahwa perpustakaan dapat disesuaikan dengan kebutuhan proyek. Dalam hal ini, saya akan menggunakan YGOPRODeck Yu-Gi-Oh! API.
Berikut ini adalah cara Yu-Gi-Oh! bot yang akan kita buat bekerja:
- Seseorang mengetik Nama Kartu Yugioh melalui pesan WhatsApp.
- Nama kartu akan diperiksa di database.
- Jika Nama Kartu Yugioh ditemukan di database, bot akan merespons dengan gambar kartu.
Library tambahan Axios
diperlukan agar bot WhatsApp dapat mengirim permintaan ke Yu-Gi-Oh! API:
$ npm install axios
or
$ yarn add axios
Berikut adalah kode lengkap dari Yu-Gi-Oh! bot:
const { Client, LocalAuth, MessageMedia } = require('whatsapp-web.js');
const axios = require('axios');
const client = new Client({
authStrategy: new LocalAuth(),
});
client.initialize();
client.on('qr', (qr) => {
console.log('QR RECEIVED', qr);
});
client.on('authenticated', () => {
console.log('AUTHENTICATED');
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message', async (msg) => {
if (msg.body) {
axios
.get(
`https://db.ygoprodeck.com/api/v7/cardinfo.php?name=${encodeURIComponent(
msg.body
)}`
)
.then(async (res) => {
if (res.data.error) {
msg.reply('No card matching your query was found in the database.');
} else {
const media = await MessageMedia.fromUrl(
res.data.data[0].card_images[0].image_url
);
client.sendMessage(msg.from, media, {
caption: `Name : ${res.data.data[0].name}\nType : ${res.data.data[0].type}\nDesc : ${res.data.data[0].desc}
`,
});
}
})
.catch((error) => {
console.error(error);
});
}
});
Saya mencoba mengetik pesan menggunakan teks dari nama kartu Yu-Gi-Oh!, yaitu Card Shuffle
, kemudian bot merespon dengan foto dan deskripsi kartu yang kami kirim sebelumnya.

Saya mencoba mengetik pesan menggunakan nama lain untuk kartu Yugioh, yaitu Burning Bamboo Sword.

Conclusion
Karena API WhatsApp masih terbatas, third-party tools seperti whatsapp-web.js
banyak membantu. Namun, karena library ini tidak berafiliasi dengan WhatsApp, jadi masih memiliki banyak masalah.
Kode proyek ini ada di : https://github.com/jagadyudha/yugioh-whatsapp-bot