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.
Sebelum memulai, pastikan Anda memiliki alat-alat berikut:
Ikuti langkah-langkah di bawah ini untuk membuat bot WhatsApp pertama Anda.
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
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
mkdir bot-wa
: Membuat direktori baru bernama bot-wa
.cd bot-wa
: Masuk ke dalam direktori bot-wa
.npm init -y
: Menginisialisasi proyek Node.js dan membuat file package.json
secara otomatis.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.
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();
makeWASocket
, useSingleFileAuthState
, fetchLatestBaileysVersion
dari Baileys, Boom
untuk error, dan fs
untuk file system).useSingleFileAuthState
digunakan untuk menyimpan sesi login Anda ke file auth.json
, sehingga Anda tidak perlu memindai QR code setiap kali bot dimulai.startBot()
akan:
creds.update
).messages.upsert
).!menu
, bot akan membalas dengan daftar perintah.!ping
, bot akan membalas PONG!! š
.!halo
, bot akan membalas sapaan.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!
Setelah bot dasar Anda berjalan, Anda bisa mengembangkan fitur-fitur lain yang lebih canggih:
!help
, !owner
, !info
.npm install -g pm2
pm2 start index.js --name "whatsapp-bot"
auth.json
: File auth.json
berisi sesi login Anda. Cadangkan file ini secara berkala agar Anda tidak perlu memindai QR code ulang jika terjadi masalah.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.