Kategori: Programming | Perkiraan waktu baca: 8 menit
Beberapa bulan lalu, saya capek banget setiap hari dapat chat WhatsApp dari rekan kerja yang isinya itu-itu aja: "Wifi lantai 2 mati", "Printer nggak connect", "Minta reset password". Padahal jawabannya sering kali sama persis dengan yang saya kirim minggu lalu ke orang lain.
Daripada terus-terusan copy-paste jawaban yang sama, saya iseng bikin bot WhatsApp yang bisa jawab pertanyaan-pertanyaan umum itu sendiri. Dari situ lahir NEXI — bot IT helpdesk kecil-kecilan yang sekarang beneran dipakai bantu kerjaan sehari-hari saya di pabrik tempat saya kerja.
Di artikel ini saya mau share cara paling dasar bikin WhatsApp bot pakai Node.js dan library whatsapp-web.js — versi yang paling sederhana dulu, belum sampai level NEXI yang sudah nyambung ke AI. Tapi ini pondasi yang sama persis yang saya pakai.
Kenapa whatsapp-web.js?
Ada beberapa cara bikin bot WhatsApp — pakai WhatsApp Business API resmi (berbayar dan butuh approval Meta), atau pakai library unofficial yang jalan dengan cara "meniru" WhatsApp Web di browser headless.
Saya pilih whatsapp-web.js karena:
- Gratis dan open-source
- Tidak perlu approval bisnis dari Meta
- Cocok untuk skala kecil-menengah (internal tim, personal automation)
- Dokumentasinya lumayan lengkap
Catatan jujur: karena ini unofficial, ada risiko akun kena banned kalau dipakai untuk spam atau kirim pesan massal ke banyak nomor asing. Untuk pemakaian internal/personal seperti kasus saya, risikonya kecil selama dipakai wajar.
Yang Perlu Disiapkan
- Node.js sudah terinstall (versi 16 ke atas)
- Nomor WhatsApp khusus untuk bot (jangan pakai nomor pribadi utama, buat backup kalau kena banned)
- Sedikit familiar dengan JavaScript dasar
Langkah 1: Setup Project
Buat folder baru, lalu install dependency-nya:
mkdir whatsapp-bot-sederhana
cd whatsapp-bot-sederhana
npm init -y
npm install whatsapp-web.js qrcode-terminal
qrcode-terminal ini buat nampilin QR code login langsung di terminal, jadi kita nggak perlu buka browser tambahan.
Langkah 2: Inisialisasi Client
Buat file index.js:
const { Client, LocalAuth } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const client = new Client({
authStrategy: new LocalAuth(),
});
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
console.log('Scan QR code di atas pakai WhatsApp di HP kamu');
});
client.on('ready', () => {
console.log('Bot siap jalan!');
});
client.initialize();
LocalAuth ini penting — dia nyimpen sesi login lokal, jadi kamu nggak perlu scan QR ulang tiap kali restart bot. Jalankan dengan:
node index.js
Scan QR yang muncul pakai WhatsApp di HP (menu Perangkat Tertaut), dan kalau berhasil bakal muncul "Bot siap jalan!" di terminal.
Langkah 3: Bikin Auto-Reply Pertama
Sekarang bagian serunya — bikin bot merespon pesan masuk. Tambahkan ini sebelum client.initialize():
client.on('message', async (message) => {
const teks = message.body.toLowerCase();
if (teks === 'halo' || teks === 'hi') {
await message.reply('Halo juga! Ada yang bisa dibantu?');
}
if (teks.includes('wifi')) {
await message.reply('Untuk kendala WiFi, coba restart dulu router-nya. Kalau masih bermasalah, laporkan ke tim IT ya.');
}
if (teks.includes('password')) {
await message.reply('Reset password bisa dilakukan lewat portal karyawan di menu Akun > Lupa Password.');
}
});
Simpel banget kan? Ini baru level paling dasar: cocokkan kata kunci, balas dengan template. Ini persis cara kerja versi awal NEXI sebelum saya integrasikan ke AI.
Langkah 4: Naik Level — Sambungkan ke AI (Opsional)
Kalau mau bot-nya lebih pintar dan bisa jawab pertanyaan yang nggak terduga (bukan cuma keyword matching), kamu bisa sambungkan ke LLM. Di NEXI saya pakai Groq API dengan model LLaMA karena responnya cepat dan ada free tier yang lumayan.
Gambaran sederhananya:
const Groq = require('groq-sdk');
const groq = new Groq({ apiKey: process.env.GROQ_API_KEY });
client.on('message', async (message) => {
const respon = await groq.chat.completions.create({
messages: [
{ role: 'system', content: 'Kamu adalah asisten IT helpdesk yang ramah dan singkat.' },
{ role: 'user', content: message.body },
],
model: 'llama-3.1-8b-instant',
});
await message.reply(respon.choices[0].message.content);
});
Dengan begini, bot bisa "mikir" jawaban sendiri, bukan cuma nyocokin keyword. Tapi hati-hati soal biaya dan rate limit kalau trafiknya sudah ramai — pertimbangkan simpan histori percakapan biar konteksnya nyambung, dan batasi panjang respon biar hemat token.
Menyimpan Data dengan SQLite (Biar Tidak Hilang)
Satu hal yang saya pelajari dari trial-and-error bikin NEXI: simpan log percakapan dan data penting ke database lokal, jangan cuma di memory. Saya pakai SQLite karena ringan dan nggak perlu setup server database terpisah:
npm install better-sqlite3
const Database = require('better-sqlite3');
const db = new Database('chatbot.db');
db.exec(`
CREATE TABLE IF NOT EXISTS logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nomor TEXT,
pesan TEXT,
waktu DATETIME DEFAULT CURRENT_TIMESTAMP
)
`);
// Simpan tiap pesan masuk
client.on('message', (message) => {
db.prepare('INSERT INTO logs (nomor, pesan) VALUES (?, ?)').run(message.from, message.body);
});
Berguna banget buat nge-track pertanyaan apa yang paling sering muncul — dari situ saya bisa tahu masalah apa yang paling sering dikeluhkan tim, tanpa harus tanya manual.
Tips dari Pengalaman Saya Pakai Ini Sehari-hari
- Jangan taruh bot di laptop pribadi yang sering mati/tidur — kalau perlu jalan 24/7, pertimbangkan VPS kecil atau Raspberry Pi yang nyala terus
- Backup folder session
LocalAuth— kalau folder ini hilang, kamu harus scan QR ulang dan riwayat sesi hilang - Batasi siapa yang bisa "training ulang" bot kalau kamu kasih fitur admin command, biar nggak disalahgunakan orang lain
- Monitor rate limiting — WhatsApp bisa curiga kalau bot kirim balasan terlalu cepat berturut-turut ke banyak nomor berbeda
Penutup
Ini baru fondasi paling dasar. NEXI sendiri sekarang sudah berkembang jadi sistem yang bisa handle banyak kategori pertanyaan IT, simpan riwayat tiket, dan terintegrasi dengan alur kerja tim saya. Tapi semuanya dimulai dari kode sederhana kayak di atas.
Kalau kamu butuh bot serupa untuk kebutuhan bisnis atau tim kamu — entah itu customer service otomatis, notifikasi order, atau helpdesk internal — saya buka jasa freelance untuk ini. Cek portofolio dan layanan saya di april-portfolio-pearl.vercel.app, atau langsung hubungi lewat halaman Contact.
Ada pertanyaan soal setup di atas? Tulis di kolom komentar, nanti saya bantu jawab.

Tidak ada komentar:
Posting Komentar