Bikin Bot WhatsApp Broadcast Info Covid-19 Secara Otomatis

>

Hai sobat Danifin, Kali ini admin mau berbagi pengalaman tentang membuat simple broadcast bot untuk mengirimkan pesan data tentang coronavirus di indonesia. sederhananya bot akan mengambil data dan mengirim pesan secara otomatis ke nomer telfon yang dipilih dan pesan tersebut akan dikirim tiap harinya untuk memantau informasi orang yang sembuh,terjangkit dan meninggal di indonesia akibat coronavirus (Covid-19) lewat WA.



Cron Jobs adalah program yang ada pada sistem operasi Linux, Cron Jobs digunakan untuk melakukan eksekusi perintah secara otomatis pada waktu yang tertentu.

Bot adalah program komputer khusus dibuat untuk melakukan pekerjaan-pekerjaan otomatis.

API adalah singkatan dari Application Programming Interface, dan memungkinkan developer untuk mengintegrasikan dua bagian dari aplikasi atau dengan aplikasi yang berbeda secara bersamaan.

Hal yang Diperlukan.

  • Server, https://glitch.com
  • Cron Jobs, https://cron-job.org
  • API WhatsApp, https://app.whatspie.com
  • API Data Informasi Covid-19 (kawalcorona.com/api).

Goals.

Membuat bot yang memberi informasi live update data coronavirus di indonesia tiap harinya melalui aplikasi WhatsApp dikirim secara otomatis. serta juga bisa dikirimkan ke banyak nomor sesuai kebutuhan.

Daftar Layanan Gratis.

Dari hal saya sebutkan tadi merupakan layanan gratis, namun anda harus mendaftar akun dulu. berikut langkah-langkah mendaftar layanan glitch, online cronjobs dan WhatsApp Api.

1. Mendaftar Layanan

glich.com dalam project kali ini sebagai server yang menampung program bot kita. cara daftarnya begini.

Klik link ini untuk mendaftar https://glitch.com/signin
Lalu pilih login dengan facebook atau google akun anda.
Pilih login pakai akun mana. misal pakai google tinggal masukan google anda.
Maka tampilan akan seperti ini.

2. Mendaftar Layanan Cronjobs

Cronjob dalam project kali ini digunakan untuk eksekusi otomatis program yang kita tulis yang berupa url. jadi logikanya si cronjobs akan mengunjungi link kita buat yang mana ketika link itu di buka akan menjalankan program bot WA kita. bisa di atur jam berapa dan waktu kapan dieksekusi sesuai kehendak kita. layanannya pun gratis. untuk mendaftar klik ini https://cron-job.org/en/signup

  • Setelah klik link diatas, isi semua data di formnya terus klik Security check lalu klik tombol create free account
  • Setelah mendaftar klik menu members untuk beralih ke profil kita dan pilih menu cronjobs untuk menambahkan task/tugas otomatis nantinya.

3. Mendaftar Layanan API Whatspie (WA)

Layanan whatspie pada project ini sebagai alat untuk melakukan perintah kirim pesan. pada layanan gratisnya, diberikan batasan 2000 pesan saja.

Cara daftarnya klik link berikut ini https://app.whatspie.com/register
Setelah mendaftar, klik link ini untuk menambahkan devices https://app.whatspie.com/secure/devices/create?package=BETA
Pilih server SGP2 dan masukan nomer WA aktif sobat (tulis awalan nomer 62 bukan 0 atau +62 yaa). trus klik tombol Add. Lalu scan barcodenya langsung.

* WhatApps di HP mu harus aktif ya (data internet harus aktif)
Kalau sudah berhasil terkoneksi maka akan berstatus PAIRED, untuk test kirim pesan bisa klik tombol logo pesawat kertas.

Memulai Membuat Bot.

A. Membuat Bot.

1. Buka https://glitch.com > login dengan akun yang telah dibuat tadi.
2. Klik menu new project. Pilih hello-express
3. Buka dan edit file bernama package.json, hapus semua isi dan ganti kode dibawah. kode dibawah adalah paket library yang dibutuhkan oleh bot yang kita buat.
4. Setelah menginstall paket library selanjutnya membuat botnya. buka file server.js, ctrl + a untuk Select All lalu hapus ganti dengan kode dibawah ini.


// ~~~ PERHATIAN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// KODE INI SUDAH TIDAK BEKERJA LAGI, KARNA PERUBAHAN
// STUKTUR DAN SISTEM DARI WHATSAPPIE API
//
// ~~~ PERHATIAN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//copy dan paste kode dibawah ini ke file package.json
{
"name": "hello-express",
"version": "0.0.1",
"description": "A simple Node app built on Express, instantly up and running.",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.17.1",
"qjobs": "^1.2.0",
"cloudscraper": "^4.6.0",
"request": "^2.88.2"
},
"engines": {
"node": "12.x"
},
"repository": {
"url": "https://glitch.com/edit/#!/hello-express"
},
"license": "MIT",
"keywords": [
"node",
"glitch",
"express"
]
}
view rawpackage.json hosted with ❤ by GitHub
// ~~~ PERHATIAN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// KODE INI SUDAH TIDAK BEKERJA LAGI, KARNA PERUBAHAN
// STUKTUR DAN SISTEM DARI WHATSAPPIE API
//
// ~~~ PERHATIAN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const express = require("express");
const request = require("cloudscraper");
const antrian = require("qjobs");
const app = express();
// satuan dalam milidetik (default 1 menit = 60000milis)
// untuk mencegah nomer diblokir
// jeda tiap task job antian kirim pesan ke semua kontak WA
const delay_kirim_pernomor = 60000;
// jeda request ke api wa
const delay_request_api = 30000;
// tambahkan saran ke daftar saran sesuka anda.
const daftar_saran = [
"cuci tangan setelah berpergian",
"hindari menyentuh area wajah",
"hindari berjabat tangan",
"selalu jaga jarak ya",
"jaga kesehatan!"
];
// api coronavirus dan whatsapp - - - - -
//https://api.kawalcorona.com/indonesia => corona report case
const info_coronavirus = "https://api.kawalcorona.com/indonesia";
//https://app.whatspie.com/ => whatapps
const wa = "https://app.whatspie.com/api/messages";
// - - - - - -
//********* jangan lupa isi variable - variable dibawah ini *****
// dibawah ini nomer telpon sobat.
const device_number = "nomer sobat";
//ubah daftar kontak, ubah dengan nomer yang mau sobat kirimin info.
const target_number = ["nomer1","nomer2","dsb"];
// ubah API Key, bisa dilihat di menu profil setting https://app.whatspie.com
const wa_token = "token api WA whatspie sobat";
// ***************
// fungsi dapatkan waktu dan memilih acak untuk saran
var waktu_sekarang = split => {
var d = new Date();
var date =
d.getDate() +
split +
(d.getMonth() + 1) +
split +
d.getFullYear() +
split +
d.getHours() +
":" +
d.getMinutes();
return date;
};
var acak_saran = array => {
return array[Math.floor(Math.random() * array.length)];
};
app.get("/kirim", (req, res) => {
try {
request.get(info_coronavirus, async function(err, response, body) {
const wait_data = await JSON.parse(body);
if (typeof body !== "undefined") {
const data_indonesia = await wait_data[0];
res.send([data_indonesia]);
var message = `~~> [ Last Update : ${waktu_sekarang("-")} ]
- - - - - - - - - - - - - - - - - - -
- - *Data Coronavirus Indonesia* - -
- - - - - - - - - - - - - - - - - - -
*- Total Positif* = ${data_indonesia.positif}
*- Total Sembuh* = ${data_indonesia.sembuh}
*- Total Meninggal* = ${data_indonesia.meninggal}
- - - - - - - - - - - - - - - - - - -
- Sumber Data : https://kemkes.go.id
!(•̀ᴗ•́)و ̑̑ _" ${acak_saran(daftar_saran)} "_`;
var send_message = function(args, next) {
setTimeout(function() {
request.post(
wa,
{
form: {
receiver: target_number[args[0]],
device: device_number,
message: message,
type: "chat"
},
auth: {
bearer: wa_token
}
},
function(err, respon, body) {
console.log(args);
console.log("status: " + respon.statusCode);
}
);
next();
}, delay_request_api);
};
var qj = new antrian({ maxConcurrency: 1 });
qj.on("start", function() {
console.log(" ");
console.log("*********** Starting Antrian Kirim Pesan **********");
console.log(" ");
});
qj.on("jobStart", function(args) {
console.log(" ");
console.log("-------- Task Jobs Start --------");
console.log(" ");
console.log("[-] JobStart => ", args);
console.log(" ");
});
qj.on("jobEnd", function(args) {
console.log(" ");
console.log("[X] Jobend => ", args);
console.log(" ");
console.log(" ");
console.log("-------- Task Jobs Done --------");
console.log(" ");
// If job end, then make a pause
qj.pause(true);
setTimeout(function() {
qj.pause(false);
}, delay_kirim_pernomor);
});
qj.on("pause", function(since) {
console.log("in pause since " + since + " milliseconds");
});
qj.on("unpause", function() {
console.log(" ");
console.log("[P] Job pause end, continu ..");
console.log(" ");
});
qj.on("end", function() {
console.log(" ");
console.log("************ Semua Pesan Telah Terkirim ************");
console.log(" ");
});
for (var i = 0; i < target_number.length; i++) {
// task antrian kirim pesan ke banyak nomer
qj.add(
send_message,
[ i , " Send message to number phone [ " + target_number[i]+ " ]"]
);
}
qj.run();
} else {
//jika request gagal maka akan reload.
setTimeout(function() {
res.redirect("/kirim");
}, 5000);
res.send("auto reload after 5s …");
}
});
} catch (e) {
setTimeout(function() {
//jika request gagal maka akan reload.
res.redirect("/kirim");
}, 5000);
res.send("auto reload page after 5s …");
}
});
const listener = app.listen(process.env.PORT, () => {
console.log("Your app is listening on port " + listener.address().port);
});
view rawserver.js hosted with ❤ by GitHub

5. Jangan lupa ubah isi variable device_number, target_number, wa_token pada kode.

  • device_number adalah nomer WhatsApp sobat.
  • target_number adalah daftar nomer WhatsApp yang mau sobat kirimin pesan / nomor target.
  • wa_token adalah Api Key / password untuk meminta akses ke layanan whatspie(.)com

6. Setelah mengubah isi variable device_number, target_number, wa_token dengan benar. Langkah pertama sudah selesai.

UJI COBA MENJALAN KAN BOT.


Klik menu show lalu klik Next to the code
Setelah itu klik Change URL dan isi dengan kirim sesuai gambar dibawah.
Untuk melihat proses antiran mengirim pesan bisa dengan mengklik Tools lalu Logs
Jika status nya 200 maka bot berhasil mengirim pesan.

Langkah selanjutnya adalah membuat bot kita mengirim pesan secara otomatis dengan cron jobs menggunakan layanan crob-job.org

B. Mengkonfigurasi Cron Jobs.

1. Login akun yang telah dibuat sebelumnya.
2. Klik menu members lalu klik menu Cronjobs.
3. Klik tombol Create cronjob.

Deskripsi :

a) judul : beri nama tugas cron jobs sobat.
b) atur alamat eksekusi : isi alamat web bot sobat. untuk mencari tahu apa nama alamatnya bisa lihat nama project sobat.

contoh : misal nama project sobat bramble-thirsty-crayfish.
Jadi gini nama alamat punya sobat [sesuaikan dengan punya sobat],
” https://bramble-thirsty-crayfish.glitch.me/kirim “

c) atur jadwal : pilih kapan bot sobat bakal di eksekusi. bisa pilih tiap hari, tiap waktu atau tiap bulan.
d) konfigurasi jika ada error eksekusi [centang seperti gambar]
e) konfigurasi laporan dari eksekusi [centang seperti gambar]

5. Setelah diisi semua, klik tombol Create cronjob.

Maka akan muncul daftar perintah eksekusi cronjobs yang kita buat.
“ Yeaayyyy…. BERHASIL… Bot anda akan mengirim pesan sesuai waktu yang anda terapkan ”

Sekian tulisan dari saya dan semoga bermanfaat, mohon koreksi kalau ada salah. Terimakasih ~

Lihat Komentar