Label

Selasa, 18 Maret 2025

Membuat Bot WA menggunakan NODE JS

1. Instalasi Modul yang Dibutuhkan

Jalankan perintah berikut di terminal:

npm install express body-parser ping whatsapp-web.js qrcode-terminal

2. Buat File main.js

Simpan file berikut sebagai main.js:

const ping = require('ping'); const { Client, LocalAuth } = require('whatsapp-web.js'); const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; // Inisialisasi WhatsApp Bot const client = new Client({ authStrategy: new LocalAuth() }); client.on('qr', qr => { const qrcode = require('qrcode-terminal'); console.log('Scan QR Code ini untuk login:'); qrcode.generate(qr, { small: true }); }); client.on('ready', () => { console.log(' Bot siap digunakan!'); }); // Middleware untuk membaca JSON app.use(bodyParser.json()); // Endpoint untuk mengirim pesan dari server luar app.post('/send-message', (req, res) => { const { number, message } = req.body; if (!number || !message) { return res.status(400).json({ status: 'error', message: 'Nomor dan pesan wajib diisi' }); } const chatId = number + "@c.us"; // Format nomor WhatsApp internasional client.sendMessage(chatId, message) .then(response => { res.json({ status: 'success', message: 'Pesan terkirim', response }); }) .catch(err => { res.status(500).json({ status: 'error', message: 'Gagal mengirim pesan', error: err }); }); }); // Daftar server yang dipantau const servers = [ { name: "Google", ip: "8.8.8.8", status: true }, { name: "Cloudflare", ip: "1.1.1.1", status: true }, { name: "Website", ip: "yourwebsite.com", status: true } ]; const targetNumber = "6281234567890@c.us"; // Ganti dengan nomor WhatsApp tujuan // Fungsi untuk mengecek status server function checkServers() { servers.forEach(server => { ping.sys.probe(server.ip, isAlive => { if (!isAlive && server.status) { console.log(` Server ${server.name} (${server.ip}) DOWN!`); client.sendMessage(targetNumber, `⚠️ Server ${server.name} (${server.ip}) tidak merespons!`); server.status = false; // Update status agar tidak spam } else if (isAlive && !server.status) { console.log(` Server ${server.name} (${server.ip}) kembali UP!`); client.sendMessage(targetNumber, ` Server ${server.name} (${server.ip}) sudah kembali online.`); server.status = true; } }); }); } // Jalankan pengecekan server setiap 1 menit setInterval(checkServers, 60000); // Jalankan server Express app.listen(port, () => { console.log(` Server berjalan di http://localhost:${port}`); }); // Jalankan bot WhatsApp client.initialize();

3. Cara Menjalankan Bot

Jalankan perintah ini di terminal:

sh

node main.js

Saat pertama kali dijalankan, bot akan menampilkan QR Code di terminal. Scan QR tersebut menggunakan WhatsApp Web untuk login.


4. Cara Mengirim Data dari Server Luar

Setelah bot berjalan, server luar bisa mengirimkan pesan WhatsApp menggunakan HTTP POST request.

Contoh Kirim Data via curl


curl -X POST http://IP_BOT:3000/send-message \ -H "Content-Type: application/json" \ -d '{"number": "6281234567890", "message": "Halo, ini pesan dari server luar"}'

Contoh Kirim Data via Python

import requests url = "http://IP_BOT:3000/send-message" data = { "number": "6281234567890", "message": "Halo, ini pesan dari server luar" } headers = {"Content-Type": "application/json"} response = requests.post(url, json=data, headers=headers) print(response.json())

5. Membuka Akses untuk Server Luar

Jika Bot Berjalan di Server dengan IP Publik

Buka port 3000 agar bisa diakses dari luar:


sudo ufw allow 3000/tcp

Lalu akses dengan http://IP_SERVER_BOT:3000/send-message.

Jika Bot Berjalan di Localhost

Gunakan Ngrok untuk membuka akses ke publik:

ngrok http 3000

Ngrok akan memberikan URL seperti https://random-id.ngrok.io. Gunakan URL ini untuk mengirim request dari luar.


Kesimpulan

Bot WhatsApp bisa menerima data dari server luar melalui API.
Mendeteksi status server (UP/DOWN) dan mengirimkan notifikasi ke WhatsApp.
Bisa diakses dari luar menggunakan Ngrok atau dengan membuka port.

Terbaru

modul pwm dengan arduino pro mini dilengkapi dengan batrai level meter 5 led

  🔋 Contoh Indikator Level Baterai dengan LED (4 Tingkat) 🔧 Tujuan: LED1 menyala jika tegangan ≥ 12.6V (full) LED2 menyala jika teg...

Lainya