· 5 years ago · Jul 22, 2020, 10:14 AM
1const express = require("express");
2const request = require("cloudscraper");
3const antrian = require("qjobs");
4const app = express();
5
6// satuan dalam milidetik (default 1 menit = 60000milis)
7// untuk mencegah nomer diblokir
8
9// jeda tiap task job antian kirim pesan ke semua kontak WA
10const delay_kirim_pernomor = 60000;
11
12// jeda request ke api wa
13const delay_request_api = 30000;
14
15// tambahkan saran ke daftar saran sesuka anda.
16const daftar_saran = [
17 "cuci tangan setelah berpergian",
18 "hindari menyentuh area wajah",
19 "hindari berjabat tangan",
20 "selalu jaga jarak ya",
21 "jaga kesehatan!"
22];
23
24// api coronavirus dan whatsapp - - - - -
25
26//https://api.kawalcorona.com/indonesia => corona report case
27const info_coronavirus = "https://api.kawalcorona.com/indonesia";
28
29//https://app.whatspie.com/ => whatapps
30const wa = "https://app.whatspie.com/api/messages";
31// - - - - - -
32
33//********* jangan lupa isi variable - variable dibawah ini *****
34
35// dibawah ini nomer telpon kamu.
36const device_number = "nomer kamu";
37
38//ubah daftar kontak, ubah dengan nomer yang mau kamu kirimin info.
39const target_number = ["nomer1","nomer2","dsb"];
40
41// ubah API Key, bisa dilihat di menu profil setting https://app.whatspie.com
42const wa_token = "token api WA whatspie kamu";
43
44// ***************
45
46// fungsi dapatkan waktu dan memilih acak untuk saran
47var waktu_sekarang = split => {
48 var d = new Date();
49 var date =
50 d.getDate() +
51 split +
52 (d.getMonth() + 1) +
53 split +
54 d.getFullYear() +
55 split +
56 d.getHours() +
57 ":" +
58 d.getMinutes();
59 return date;
60};
61
62var acak_saran = array => {
63 return array[Math.floor(Math.random() * array.length)];
64};
65
66app.get("/kirim", (req, res) => {
67 try {
68 request.get(info_coronavirus, async function(err, response, body) {
69 const wait_data = await JSON.parse(body);
70 if (typeof body !== "undefined") {
71 const data_indonesia = await wait_data[0];
72 res.send([data_indonesia]);
73
74 var message = `~~> [ Last Update : ${waktu_sekarang("-")} ]
75 - - - - - - - - - - - - - - - - - - -
76 - - *Data Coronavirus Indonesia* - -
77 - - - - - - - - - - - - - - - - - - -
78 *- Total Positif* = ${data_indonesia.positif}
79 *- Total Sembuh* = ${data_indonesia.sembuh}
80 *- Total Meninggal* = ${data_indonesia.meninggal}
81 - - - - - - - - - - - - - - - - - - -
82 - Sumber Data : https://kemkes.go.id
83 !(•̀ᴗ•́)و ̑̑ _" ${acak_saran(daftar_saran)} "_`;
84
85 var send_message = function(args, next) {
86 setTimeout(function() {
87 request.post(
88 wa,
89 {
90 form: {
91 receiver: target_number[args[0]],
92 device: device_number,
93 message: message,
94 type: "chat"
95 },
96 auth: {
97 bearer: wa_token
98 }
99 },
100 function(err, respon, body) {
101 console.log(args);
102 console.log("status: " + respon.statusCode);
103 }
104 );
105 next();
106 }, delay_request_api);
107 };
108
109 var qj = new antrian({ maxConcurrency: 1 });
110
111 qj.on("start", function() {
112 console.log(" ");
113 console.log("*********** Starting Antrian Kirim Pesan **********");
114 console.log(" ");
115 });
116
117 qj.on("jobStart", function(args) {
118 console.log(" ");
119 console.log("-------- Task Jobs Start --------");
120 console.log(" ");
121 console.log("[-] JobStart => ", args);
122 console.log(" ");
123 });
124
125 qj.on("jobEnd", function(args) {
126 console.log(" ");
127 console.log("[X] Jobend => ", args);
128 console.log(" ");
129 console.log(" ");
130 console.log("-------- Task Jobs Done --------");
131 console.log(" ");
132
133 // If job end, then make a pause
134
135 qj.pause(true);
136 setTimeout(function() {
137 qj.pause(false);
138 }, delay_kirim_pernomor);
139 });
140
141 qj.on("pause", function(since) {
142 console.log("in pause since " + since + " milliseconds");
143 });
144
145 qj.on("unpause", function() {
146 console.log(" ");
147 console.log("[P] Job pause end, continu ..");
148 console.log(" ");
149 });
150
151 qj.on("end", function() {
152 console.log(" ");
153 console.log("************ Semua Pesan Telah Terkirim ************");
154 console.log(" ");
155 });
156
157 for (var i = 0; i < target_number.length; i++) {
158 // task antrian kirim pesan ke banyak nomer
159
160 qj.add(
161 send_message,
162 [ i , " Send message to number phone [ " + target_number[i]+ " ]"]
163 );
164
165 }
166
167 qj.run();
168
169 } else {
170 //jika request gagal maka akan reload.
171 setTimeout(function() {
172 res.redirect("/kirim");
173 }, 5000);
174 res.send("auto reload after 5s …");
175 }
176 });
177 } catch (e) {
178 setTimeout(function() {
179 //jika request gagal maka akan reload.
180 res.redirect("/kirim");
181 }, 5000);
182 res.send("auto reload page after 5s …");
183 }
184});
185
186const listener = app.listen(process.env.PORT, () => {
187 console.log("Your app is listening on port " + listener.address().port);
188});