Contents
    Cara Membuat Bot Whatsapp Dengan Node.js

    Cara Membuat Bot Whatsapp Dengan Node.js

    Menggunakan third-party library untuk membuat bot WhatsApp gratis dan dapat dikustomisasi.

    Posted by Jagad on April 5, 2022
    -- views

    5 min read

    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.

    Meme about the whatsapp bot

    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 qr-code-terminal:

    $ npm install qr-code-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.

    QR code

    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.

    Membalas Pesan

    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.

    Replying Message with Media

    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:

    1. Seseorang mengetik Nama Kartu Yugioh melalui pesan WhatsApp.
    2. Nama kartu akan diperiksa di database.
    3. 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.

    Yu-Gi-Oh API

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

    Yu-Gi-Oh API

    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


    Post Reactions
    LIKE
    LOVE
    Wow
    YAY
    Contributors

    The writing on this website may contain errors in grammar, punctuation, etc. Please make a contribution here