šŸ¤– Tutorial: Cara Membuat Bot WhatsApp dengan Node.js

Terakhir diperbarui: 1 Juli 2025

Tutorial ini membahas langkah demi langkah cara membuat bot WhatsApp menggunakan Node.js dan Baileys (library WhatsApp Web API). Cocok untuk pemula yang ingin membangun bot WhatsApp otomatis yang dapat menjawab pesan, menjalankan perintah, mengirim media, dan lainnya.


🧰 Alat & Bahan yang Dibutuhkan

Sebelum memulai, pastikan Anda memiliki alat-alat berikut:


šŸ”§ Langkah-Langkah Pembuatan Bot WhatsApp

Ikuti langkah-langkah di bawah ini untuk membuat bot WhatsApp pertama Anda.

1. Instalasi Node.js

Jika Anda belum menginstalnya, unduh dan instal Node.js dari situs resminya. Ikuti instruksi instalasi yang ada. Setelah terinstal, Anda bisa memverifikasinya dengan mengetik node -v dan npm -v di terminal.

node -v
npm -v

2. Buat Folder Proyek

Buka Terminal atau Command Prompt Anda, lalu buat folder baru untuk proyek bot Anda dan masuk ke dalamnya.

mkdir bot-wa
cd bot-wa
npm init -y

3. Instalasi Library Baileys

Baileys adalah library yang akan kita gunakan untuk berinteraksi dengan WhatsApp Web API. Instal dengan perintah berikut:

npm install @whiskeysockets/baileys @hapi/boom

Catatan: Saya menambahkan @hapi/boom karena sering digunakan bersama Baileys untuk penanganan error.

4. Buat File Bot Utama

Buat file baru bernama index.js di dalam folder bot-wa menggunakan text editor Anda (misalnya Visual Studio Code). Kemudian, salin dan tempel kode berikut ke dalam file index.js:

const { default: makeWASocket, useSingleFileAuthState, fetchLatestBaileysVersion } = require('@whiskeysockets/baileys');
const { Boom } = require('@hapi/boom'); // Menggunakan Boom untuk penanganan error
const fs = require('fs'); // Modul fs untuk bekerja dengan sistem file

// Menggunakan useSingleFileAuthState untuk menyimpan sesi otentikasi
const { state, saveState } = useSingleFileAuthState('./auth.json');

async function startBot() {
    // Mengambil versi Baileys terbaru
    const { version, isLatest } = await fetchLatestBaileysVersion();
    console.log(`Menggunakan Baileys versi: ${version.join('.')}, ${isLatest ? 'Terbaru' : 'Perlu Diperbarui'}`);

    const sock = makeWASocket({
        version,
        auth: state, // Menggunakan state otentikasi
        printQRInTerminal: true // Menampilkan QR Code di terminal untuk login
    });

    // Event listener untuk update kredensial (penting untuk menyimpan sesi)
    sock.ev.on('creds.update', saveState);

    // Event listener untuk menerima pesan
    sock.ev.on('messages.upsert', async ({ messages, type }) => {
        const msg = messages[0]; // Ambil pesan pertama dari array
        
        // Abaikan pesan jika tidak ada konten atau dari status WA
        if (!msg.message || msg.key.fromMe || msg.key.remoteJid === 'status@broadcast') return;

        // Mendapatkan ID pengirim pesan
        const from = msg.key.remoteJid;
        
        // Mendapatkan teks pesan
        const text = msg.message.conversation || msg.message.extendedTextMessage?.text || msg.message.imageMessage?.caption || '';

        console.log(`Pesan dari ${from}: ${text}`);

        // Contoh Balasan Otomatis
        if (text === '!menu') {
            await sock.sendMessage(from, { 
                text: 'Halo! Ini adalah bot WhatsApp kamu šŸ¤–\n\nPerintah:\n• !menu\n• !ping\n• !halo' 
            });
        } else if (text === '!ping') {
            await sock.sendMessage(from, { 
                text: 'PONG!! šŸ“' 
            });
        } else if (text === '!halo') {
            await sock.sendMessage(from, { 
                text: `Halo juga, ${msg.pushName || from.split('@')[0]}!` 
            });
        } else if (text.toLowerCase().includes('apa kabar')) {
            await sock.sendMessage(from, {
                text: 'Baik-baik saja! Kamu bagaimana?'
            });
        }
    });

    // Menangani error koneksi
    sock.ev.on('connection.update', (update) => {
        const { connection, lastDisconnect } = update;
        if (connection === 'close') {
            const shouldReconnect = (lastDisconnect.error instanceof Boom)?.output?.statusCode !== 401;
            console.log('Koneksi terputus karena', lastDisconnect.error, ', menyambung ulang:', shouldReconnect);
            // Sambungkan ulang jika bukan karena otentikasi (401)
            if (shouldReconnect) {
                startBot();
            } else {
                console.log('Koneksi tidak dapat disambung ulang. Hapus auth.json dan mulai ulang.');
            }
        } else if (connection === 'open') {
            console.log('Bot WhatsApp Terhubung!');
        }
    });
}

// Memulai bot
startBot();

5. Jalankan Bot

Kembali ke Terminal atau Command Prompt Anda, pastikan Anda berada di dalam folder bot-wa. Jalankan bot dengan perintah:

node index.js

→ Akan muncul QR Code di terminal Anda. Buka aplikasi WhatsApp di ponsel Anda, masuk ke Pengaturan > Perangkat Tertaut, lalu pindai QR Code tersebut. Setelah berhasil dipindai, bot Anda akan terhubung!


āš™ļø Fitur Dasar yang Bisa Ditambahkan

Setelah bot dasar Anda berjalan, Anda bisa mengembangkan fitur-fitur lain yang lebih canggih:


šŸ“¦ Tips Tambahan


šŸ“ Struktur Folder Sederhana

bot-wa/
ā”œā”€ā”€ index.js      // File utama bot Anda
ā”œā”€ā”€ auth.json     // File tempat sesi login Anda disimpan (akan otomatis dibuat setelah scan QR)
ā”œā”€ā”€ package.json  // Informasi proyek dan daftar dependensi
└── node_modules/ // Folder tempat library Baileys dan dependensi lainnya diinstal

Sekian tutorial singkat ini. Semoga membantu Anda dalam proses pembuatan bot WhatsApp Anda!

Tutorial ini disiapkan oleh Fathir Sthore.