Boilerplate simple WhatsApp message API dengan Baileys
Sejak tiga pekan terakhir saya aktif mencari kos di berbagai platform, di antaranya adalah lewat aplikasi Mamikos, aplikasi Rukita, Google Maps (dengan fitur pencarian atau langsung menelusuri jalan-jalan dengan street view), dan Facebook. Saya melihat saya sering harus: 1. Menyimpan informasi terkait kos yang menarik: harga, fasilitas, no WA 2. Menghubungi via WA menggunakan template yang kurang lebih seperti bertanya "Apakah ada kamar yang tersedia? ..." tapi lebih panjang agar terlihat sopan Saya kira tidak perlu membuat automation dalam melakukan hal di atas karena saya pikir tidak akan banyak menghubungi pemilik kos. Ternyata, dua hal di atas lumayan terasa cukup manual. Akhirnya saya putuskan untuk membuat API send message menggunakan [Baileys](https://github.com/WhiskeySockets/Baileys) dan [Express.js](https://expressjs.com/). Di dokumentasi resminya, tidak ada quick hello world untuk membuat bot dengan Baileys. Karena itu, saya pikir mungkin akan saya tuliskan di sini, mungkin saya butuhkan di masa depan. ``` import QRCode from "qrcode"; import express from "express"; import makeWASocket, { useMultiFileAuthState } from "baileys"; import P from "pino"; const { state, saveCreds } = await useMultiFileAuthState("auth"); const sock = makeWASocket({ auth: state, logger: P({ level: "silent" }), }); sock.ev.on("creds.update", saveCreds); sock.ev.on("connection.update", async (update) => { const { connection, qr } = update; if (qr) { console.log(await QRCode.toString(qr, { type: "terminal" })); } else if (connection === "close") { console.log("whatsapp conn closed"); process.exit(1); } else if (connection === "open") { console.log("whatsapp conn open"); } }); const app = express(); app.get("/send", async (req, res) => { const { to, msg } = req.query; if (!to || !msg) { return res .status(400) .send({ status: false, message: "to and msg query required" }); } try { await sock.sendMessage(to + "@s.whatsapp.net", { text: msg.toString() }); res.send({ status: true, message: "message sent" }); } catch (e) { res.status(500).send({ status: false, message: e.message }); } }); app.listen(12000, () => { console.log("api running on http://localhost:12000"); }); ``` Perlu diingat script di atas tidak didesain untuk berjalan terus-menerus ketika koneksi ke server WhatsApp terputus alias hanya untuk digunakan sebentar-sebentar saja.Created: 2025-10-05 11:49:21, Updated: 2025-10-05 11:49:21, ID: 0ad57ed9-eb62-4d16-b96e-721c6413805d