Untitled
unknown
javascript
4 years ago
33 kB
16
Indexable
var rimraf = require("rimraf");
const https = require('https');
const qrcode = require('qrcode-terminal');
const fetch = require('node-fetch');
var QRCode = require('qrcode');
var Jimp = require('jimp');
const { pad, toCRC16, dataQris } = require('../../src/Qris.js');
var fs = require('fs'),
request = require('request');
const {
Client,
LegacySessionAuth,
Location,
List,
Buttons
} = require('./../../index');
let sessions = {};
const sleep = (milliseconds) => {
const date = Date.now();
let currentDate = null;
do {
currentDate = Date.now();
} while (currentDate - date < milliseconds);
};
function formatRupiah(angka, prefix){
var number_string = angka.replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substr(0, sisa),
ribuan = split[0].substr(sisa).match(/\d{3}/gi);
// tambahkan titik jika yang di input sudah menjadi angka ribuan
if(ribuan){
separator = sisa ? '.' : '';
rupiah += separator + ribuan.join('.');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return prefix == undefined ? rupiah : (rupiah ? 'Rp. ' + rupiah : '');
}
function formatNumber(num) {
return (num.toFixed(0).replace('.', ',').replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.'))
}
function generateQris(mid, merchantName, nominal, fileName){
let tax = '';
//isi data qris
let qris = "00020101021126570011ID.DANA.WWW011893600915305112759002090511275900303UMI51440014ID.CO.QRIS.WWW0215ID"+mid+"0303UMI5204561153033605802ID5913"+merchantName+"6013Kab. Magelang6105564846304C7D1";
//isi nominal
// let nominal = "5000";
//pajak (opsional)
//jenis pajak
let taxtype = 'p' // r/p, r = rupiah, p = persen
//nominal pajak
let fee = "10" //contoh persen 10%
let qris2 = qris.slice(0, -4);
let replaceQris = qris2.replace("010211", "010212");
let pecahQris = replaceQris.split("5802ID");
let uang = "54" + pad(nominal.length) + nominal;
tax = (taxtype == 'p') ? "55020357" + pad(fee.length) + fee : "55020256" + pad(fee.length) + fee;
uang += (tax.length == 0) ? "5802ID" : tax + "5802ID";
let output = pecahQris[0].trim() + uang + pecahQris[1].trim();
output += toCRC16(output);
console.log(output) //output
// let fileName = Math.floor(Date.now()/1000);
//make output file image
QRCode.toFile('tmp.png', output, { margin: 2, scale: 10 }, async function (err, url) {
let data = dataQris(qris);
var text = data.merchantName;
var qr = await Jimp.read('tmp.png');
Jimp.read('assets/template.png', (err, image) => {
if (err) console.log(err);
var w = image.bitmap.width
var h = image.bitmap.height
Jimp.loadFont((text.length > 18) ? 'assets/font/BebasNeueSedang/BebasNeue-Regular.ttf.fnt' : 'assets/font/BebasNeue/BebasNeue-Regular.ttf.fnt').then(fonttitle => {
Jimp.loadFont((text.length > 28) ? 'assets/font/RobotoSedang/Roboto-Regular.ttf.fnt' : 'assets/font/RobotoBesar/Roboto-Regular.ttf.fnt').then(fontnmid => {
Jimp.loadFont('assets/font/RobotoKecil/Roboto-Regular.ttf.fnt').then(fontcetak => {
image
.composite(qr, w / 4 - 30, h / 4 + 68)
.print(fonttitle, w / 5 - 30, h / 5 + 68, { text: text, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? -180 : -210)
.print(fontnmid, w / 5 - 30, h / 5 + 68, { text: `NMID : ${data.nmid}`, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? +20 : -45)
.print(fontnmid, w / 5 - 30, h / 5 + 68, { text: data.id, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? +110 : +90)
.print(fontcetak, w / 20, 1205, `Dicetak oleh: Bank Rakyat Indonesia`)
.write(`output/qr.jpg`);
fs.unlinkSync('tmp.png')
})
})
});
});
});
}
var download = function(uri, filename, callback) {
try {
var acceptExt = ["png", "jpg", "jpeg", "pdf", "mp3", "mp4", "docx", "mp4"];
var extension = uri.split('.').pop();
console.log(extension);
var extCheck = acceptExt.includes(extension);
if (extCheck) {
request.head(uri, function(err, res, body) {
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
} else {
throw new Error("media not approve");
}
// let file = "https://admin.sliovg.com/file/video/Video%20Greeting%20Template/Video-Haji-Umrah-2.mp4";
// let mimetype;
// let filename;
// const attachment = await axios.get(file, {
// responseType: 'arraybuffer'
// }).then(response => {
// mimetype = response.headers['content-type'];
// filename = file.split("/").pop();
// return response.data.toString('base64');
// });
// if( attachment ){
// const media = new MessageMedia(mimetype, attachment, filename);
// }
} catch (err) {
res.status(400).json({
'status': 'ERROR',
'messages': err.message
})
}
};
function sendapi(data, path) {
console.log("sendapi "+data+" path: "+path);
fetch('http://209.97.173.148' + path, {
method: 'post',
body: data,
headers: {
'Content-Type': 'application/json'
},
}).then(res => res.text()).then(text => console.log(text));
}
function setclient(number) {
let sessionCfg;
const SESSION_FILE_PATH = __dirname + '/../../sessions/' + number + '.json';
if (fs.existsSync(SESSION_FILE_PATH)) {
sessionCfg = require(SESSION_FILE_PATH);
}
sessions[number] = new Client({
puppeteer: {
// executablePath: '/usr/bin/google-chrome-stable',
headless: true,
qrTimeoutMs: 0,
userDataDir: __dirname + '/../../sessions/' + number,
args: [
'--no-sandbox',
'--disable-cache',
'--disable-application-cache',
'--media-cache-size=0',
'--disk-cache-size=0',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-accelerated-2d-canvas',
'--no-first-run',
'--no-zygote',
'--disable-gpu'
]
},
// session: sessionCfg
authStrategy: new LegacySessionAuth({
session: sessionCfg
})
});
sessions[number].initialize();
// console.log("session after initialize "+JSON.stringify(sessions));
let qr_reload = 1;
sessions[number].on('qr', qr => {
console.log("qr_reload "+qr_reload);
if (qr_reload > 10) {
const data = JSON.stringify({
apikey: 'we4567talk',
client: number
});
sendapi(data, '/apiv2/qr_timeout');
sessions[number].destroy();
rimraf(__dirname + '/../../sessions/' + number, function () { console.log(number + " removed"); });
// process.exit();
}else{
qrcode.generate(qr, {
small: true
});
const data = JSON.stringify({
apikey: 'we4567talk',
qr: qr,
client: number
});
sendapi(data, '/apiv2/get_qr');
}
qr_reload++;
});
// console.log("session after qr "+JSON.stringify(sessions));
sessions[number].on('ready', async () => {
console.log(number + ' is ready!');
const infoClient = sessions[number].info;
const infoBusiness = await sessions[number].getContactById(infoClient.me._serialized);
const data = JSON.stringify({
apikey: 'we4567talk',
client: number,
client_info: infoClient,
is_business: infoBusiness.isBusiness ? 1 : 0
});
// console.log(data)
sendapi(data, '/apiv2/update_config');
});
// console.log("session after ready "+JSON.stringify(sessions));
sessions[number].on('disconnected', (reason) => {
console.log(reason);
fs.unlinkSync(SESSION_FILE_PATH);
sessions[number].destroy();
rimraf(__dirname + '/../../sessions/' + number, function () { console.log("dir removed"); });
const data = JSON.stringify({
apikey: 'we4567talk',
scan: 'on',
client: number
});
sendapi(data, '/apiv2/update_config_scan');
});
sessions[number].on('authenticated', (session) => {
console.log('AUTHENTICATED', session);
sessionCfg = session;
fs.writeFile(SESSION_FILE_PATH, JSON.stringify(session), function(err) {
if (err) {
console.error(err);
}
});
const data = JSON.stringify({
apikey: 'we4567talk',
scan: 'off',
client: number
});
sendapi(data, '/apiv2/update_config_scan');
});
// console.log("session after auth "+JSON.stringify(sessions));
sessions[number].on('message', async msg => {
console.log("on message");
var row = null;
var b64 = null;
var related_message_id = null;
// console.log("msg.to "+msg.to);
console.log("msg "+JSON.stringify(msg));
const infoBusiness = await sessions[number].getContactById(msg.to).isBusiness;
if (msg.hasQuotedMsg) {
const quotedMsg = await msg.getQuotedMessage();
console.log("quotedMsg "+JSON.stringify(quotedMsg));
console.log("quotedMsg.id "+JSON.stringify(quotedMsg.id));
console.log("quotedMsg.id.id "+JSON.stringify(quotedMsg.id.id));
related_message_id = quotedMsg.id.id
}
if (msg.hasMedia) {
const attachmentData = await msg.downloadMedia();
b64 = attachmentData.data;
}
if (msg.type === 'chat' || msg.type === 'buttons_response' || msg.type === 'list_response') {
const info = await sessions[number].getContactById(msg.from);
row = JSON.stringify({
apikey: 'we4567talk',
client: number,
data: {
type: 'text',
message_id: msg.id.id,
related_message_id: related_message_id,
from: msg.from.slice(0, -5),
to: msg.to.slice(0, -5),
author: (msg.author) ? msg.author.slice(0, -5) : null,
message: msg.body,
customer_name: info.pushname,
timestamp: msg.timestamp
}
});
} else if (msg.type === 'image' || msg.type === 'video' || msg.type === 'audio' || msg.type === 'document' || msg.type === 'ptt') {
row = JSON.stringify({
apikey: 'we4567talk',
client: number,
data: {
type: 'media',
message_id: msg.id.id,
related_message_id: related_message_id,
from: msg.from.slice(0, -5),
to: msg.to.slice(0, -5),
author: (msg.author) ? msg.author.slice(0, -5) : null,
b64: b64,
message: msg.body,
timestamp: msg.timestamp
}
});
} else if (msg.type === 'location') {
row = JSON.stringify({
apikey: 'we4567talk',
client: number,
data: {
type: msg.type,
message_id: msg.id.id,
related_message_id: related_message_id,
from: msg.from.slice(0, -5),
to: msg.to.slice(0, -5),
author: (msg.author) ? msg.author.slice(0, -5) : null,
message: msg.body + ' ' + msg.location.description,
timestamp: msg.timestamp,
location: {
latitude: msg.location.latitude,
longitude: msg.location.longitude,
description: msg.location.description
}
}
});
} else if (msg.type === 'order') {
let data_order = await msg.getOrder();
const info = await sessions[number].getContactById(msg.from);
row = JSON.stringify({
apikey: 'a4g',
client: number,
data: {
type: msg.type,
message_id: msg.id.id,
order_id: msg.orderId,
token: msg.token,
from: msg.from.slice(0, -5),
to: msg.to.slice(0, -5),
message: msg.body,
customer_name: info.pushname,
timestamp: msg.timestamp,
data_order: data_order
}
});
}
if (msg.type == 'order') {
sendapi(row, '/apiv2/save_order');
}else{
sendapi(row, '/apiv2/save_message');
}
});
sessions[number].on('message_ack', (msg, ack) => {
var row = null;
var status = "";
switch (ack) {
case -1:
status = "Error";
break;
case 0:
status = "Pending";
break;
case 1:
status = "Sent";
break;
case 2:
status = "Delivered";
break;
case 3:
status = "Read";
break;
case 4:
status = "Played";
break;
default:
status = "Failed";
}
row = JSON.stringify({
apikey: 'we4567talk',
client: number,
data: {
message_id: msg.id.id,
ack: ack,
status: status,
timestamp: msg.timestamp
}
});
// console.log(ack)
// sendapi(row, '/apiv2/status');
});
return sessions[number];
}
exports.kill = (req, res) => {
// sessions[req.body.client].destroy();
console.log("sessions "+JSON.stringify(sessions));
console.log("kill puppeteer");
};
exports.create = async (req, res) => {
if (!req.body) {
res.status(400).send({
message: "Content can not be empty!"
});
}
try {
var phone_to = false;
var phone_check = req.body.to.length > 18 ? req.body.to + "@g.us" : req.body.to + "@c.us";
const status_nomor = await sessions[req.body.client].isRegisteredUser(phone_check);
console.log(status_nomor, phone_check, req.body.client);
console.log("req.body untuk send "+JSON.stringify(req.body));
if (status_nomor) {
if (req.body.type == 'text') {
phone_to = true;
sessions[req.body.client].sendMessage(phone_check, req.body.message);
} else if (req.body.type == 'media') {
console.log("MEDIAAAAA");
phone_to = true;
let bodyMessage = req.body.message != "" ? req.body.message : "";
if(bodyMessage != ""){
let keywordQris = bodyMessage.split(',')[0] == "qr" ? bodyMessage.split(',')[0] : "";
let nominal = bodyMessage.split(',')[1] != null || bodyMessage.split(',')[1] != "" || bodyMessage.split(',')[1] != 0 ? bodyMessage.split(',')[1] : 0;
if(keywordQris != "" && nominal > 0 ){
let merchantName = "";
let mid = "839075645763";
console.log(">>>>>>>>>>>> nominal "+nominal);
console.log(">>>>>>>>>>>> req.body.to "+req.body.to);
if(req.body.to == "6285780368656"){
merchantName = "Toko Ajib";
}else {
merchantName = "Boim Cafe";
}
var now = new Date();
// Create formatted time
var yyyy = now.getFullYear();
var mm = now.getMonth() < 9 ? "0" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based
var dd = now.getDate() < 10 ? "0" + now.getDate() : now.getDate();
var hh = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
var mmm = now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
var ss = now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
var fileName = "qr_"+yyyy+mm+dd+"-"+hh+mm+ss; // file name
// generateQris(mid, merchantName, nominal, fileName);
let tax = '';
//isi data qris
let qris = "00020101021126570011ID.DANA.WWW011893600915305112759002090511275900303UMI51440014ID.CO.QRIS.WWW0215ID"+mid+"0303UMI5204561153033605802ID5913"+merchantName+"6013Kab. Magelang6105564846304C7D1";
//isi nominal
// let nominal = "5000";
//pajak (opsional)
//jenis pajak
let taxtype = 'p' // r/p, r = rupiah, p = persen
//nominal pajak
let fee = "10" //contoh persen 10%
let qris2 = qris.slice(0, -4);
let replaceQris = qris2.replace("010211", "010212");
let pecahQris = replaceQris.split("5802ID");
let uang = "54" + pad(nominal.length) + nominal;
tax = (taxtype == 'p') ? "55020357" + pad(fee.length) + fee : "55020256" + pad(fee.length) + fee;
uang += (tax.length == 0) ? "5802ID" : tax + "5802ID";
let output = pecahQris[0].trim() + uang + pecahQris[1].trim();
output += toCRC16(output);
console.log(output) //output
// let fileName = Math.floor(Date.now()/1000);
//make output file image
QRCode.toFile('tmp.png', output, { margin: 2, scale: 10 }, async function (err, url) {
let data = dataQris(qris);
var text = data.merchantName;
var qr = await Jimp.read('tmp.png');
Jimp.read('assets/template.png', (err, image) => {
if (err) console.log(err);
var w = image.bitmap.width
var h = image.bitmap.height
Jimp.loadFont((text.length > 18) ? 'assets/font/BebasNeueSedang/BebasNeue-Regular.ttf.fnt' : 'assets/font/BebasNeue/BebasNeue-Regular.ttf.fnt').then(fonttitle => {
Jimp.loadFont((text.length > 28) ? 'assets/font/RobotoSedang/Roboto-Regular.ttf.fnt' : 'assets/font/RobotoBesar/Roboto-Regular.ttf.fnt').then(fontnmid => {
Jimp.loadFont('assets/font/RobotoKecil/Roboto-Regular.ttf.fnt').then(fontcetak => {
image
.composite(qr, w / 4 - 30, h / 4 + 68)
.print(fonttitle, w / 5 - 30, h / 5 + 68, { text: text, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? -180 : -210)
.print(fontnmid, w / 5 - 30, h / 5 + 68, { text: `NMID : ${data.nmid}`, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? +20 : -45)
.print(fontnmid, w / 5 - 30, h / 5 + 68, { text: data.id, alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER, alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE, }, w / 1.5, (text.length > 28) ? +110 : +90)
.print(fontcetak, w / 20, 1205, `Dicetak oleh: Bank Rakyat Indonesia`)
.write(`output/qr.jpg`);
sleep(5000);
const {
MessageMedia
} = require('./../../index');
const media = MessageMedia.fromFilePath("output/qr.jpg" );
sessions[req.body.client].sendMessage(phone_check, media, {
caption: "Nominal Rupiah Qris *"+formatRupiah(nominal, 'Rp. ')+"* "
});
fs.unlinkSync('tmp.png')
})
})
});
});
});
}
}
console.log("req.body.url "+req.body.url);
if(req.body.url != "qris_message"){
var filename = req.body.url.split("/").pop();
download(req.body.url, 'assets/' + filename, function(err, results) {
if (err) {
res.status(400).json({
'status': 'ERROR',
'messages': "media not approved"
})
return;
}
const {
MessageMedia
} = require('./../../index');
const media = MessageMedia.fromFilePath("assets/" + filename);
sessions[req.body.client].sendMessage(phone_check, media, {
caption: req.body.message
});
});
}
} else if (req.body.type == 'sticker') {
phone_to = true;
var filename = req.body.url.split("/").pop();
download(req.body.url, 'assets/' + filename, function(err, results) {
if (err) {
res.status(400).json({
'status': 'ERROR',
'messages': "media not approved"
})
return;
}
const {
MessageMedia
} = require('whatsapp-web.js');
const sticker = MessageMedia.fromFilePath("assets/" + filename);
sessions[req.body.client].sendMessage(phone_check, sticker, {
sendMediaAsSticker: true
});
});
} else if (req.body.type == 'location') {
phone_to = true;
const {
Location
} = require('whatsapp-web.js');
const loc = new Location(req.body.lat, req.body.lng, req.body.description);
sessions[req.body.client].sendMessage(phone_check, loc);
} else if (req.body.type == 'button_1') {
phone_to = true;
let button1 = new Buttons(req.body.message, [{
body: req.body.button_1
}], req.body.message_header, req.body.message_footer);
sessions[req.body.client].sendMessage(phone_check, button1);
} else if (req.body.type == 'button_2') {
phone_to = true;
let button2 = new Buttons(req.body.message, [{
body: req.body.button_1
}, {
body: req.body.button_2
}], req.body.message_header, req.body.message_footer);
sessions[req.body.client].sendMessage(phone_check, button2);
} else if (req.body.type == 'button_3') {
phone_to = true;
let button3 = new Buttons(req.body.message, [{
body: req.body.button_1
}, {
body: req.body.button_2
}, {
body: req.body.button_3
}], req.body.message_header, req.body.message_footer);
sessions[req.body.client].sendMessage(phone_check, button3);
} else if (req.body.type == 'button_1_media') {
phone_to = true;
var filename = req.body.url.split("/").pop();
download(req.body.url, 'assets/' + filename, function(err, results) {
if (err) {
res.status(400).json({
'status': 'ERROR',
'messages': "media not approved"
})
return;
}
const {
MessageMedia
} = require('./../../index');
let media = MessageMedia.fromFilePath("assets/" + filename);
let button1_media = new Buttons(media, [{
body: req.body.button_1
}], req.body.message_header, req.body.message_footer);
sessions[req.body.client].sendMessage(phone_check, button1_media,{'caption':req.body.message});
});
} else if (req.body.type == 'list') {
phone_to = true;
let sections2 = [{title: req.body.menu_title,rows:JSON.parse(req.body.button_list)}];
console.log("sections2 "+JSON.stringify(sections2));
let listt = new List(
req.body.message,req.body.button_name,
sections2,
req.body.message_header,
req.body.message_footer
);
console.log("listt "+JSON.stringify(listt));
sessions[req.body.client].sendMessage(phone_check, listt);
}
sessions[req.body.client].on('message_create', async msg => {
if (phone_to) {
if (req.body.to == msg.to.slice(0, -5)) {
res.status(200).json({
'status': 'ok',
'message_id': msg.id.id,
'from': msg.from.slice(0, -5),
'to': msg.to.slice(0, -5)
})
phone_to = false;
}
}
});
}else{
res.status(400).json({
'status': 'ERROR',
'messages': 'phone number is invalid'
})
}
} catch (err) {
res.status(400).json({
'status': 'ERROR',
'messages': err.message
})
}
};
exports.chatindex = (req, res) => {
console.log("chatindex");
res.writeHead(302, {
'Location': 'https://apgi4gw.com'
});
res.end();
};
exports.endSession = (req, res) => {
if (!req.body) {
res.status(400).send({
message: "Content can not be empty!"
});
}
try {
if (req.body.apikey == 'we1232123talk') {
sessions[req.body.client].destroy();
fs.unlinkSync(__dirname + '/../../sessions/' + req.body.client + '.json');
rimraf(__dirname + '/../../sessions/' + req.body.client, function() {
console.log("dir removed");
});
res.status(200).json({
'status': 'OK',
})
} else {
res.status(400).json({
'status': 'ERROR',
'messages': 'Invalid apikey'
})
}
} catch (err) {
res.status(400).json({
'status': 'ERROR',
'messages': err.message
})
}
};
exports.setClient = async (req, res) => {
if (!req.body) {
res.status(400).send({
message: "Content can not be empty!"
});
}
try {
if (req.body.apikey == 'we1232123talk') {
setclient(req.body.client);
console.log('request set client: ' + req.body.client);
res.status(200).json({
'status': "OK",
})
} else {
res.status(400).json({
'status': 'ERROR',
'messages': 'Invalid apikey'
})
}
} catch (err) {
res.status(400).json({
'status': 'ERROR',
'messages': err.message
})
}
};
exports.removeClient = (req, res) => {
if (!req.body) {
res.status(400).send({
message: "Content can not be empty!"
});
}
try {
if (req.body.apikey == 'we1232123talk') {
const SESSION_FILE_PATH = __dirname + '/../../sessions/' + req.body.client + '.json';
if(sessions[req.body.client] != null ){
sessions[req.body.client].destroy();
}else {
console.log("test");
}
fs.unlinkSync(SESSION_FILE_PATH);
rimraf(__dirname + '/../../sessions/' + req.body.client, function () { console.log("dir removed"); });
const data = JSON.stringify({
apikey: 'we4567talk',
scan: 'on',
client: req.body.client
});
sendapi(data, '/apiv2/update_config_scan');
res.status(200).json({
'status': 'OK',
})
} else {
res.status(400).json({
'status': 'ERROR',
'messages': 'Invalid apikey'
})
}
} catch (err) {
res.status(400).json({
'status': 'ERROR',
'messages': err.message
})
}
};
// setclient('IM3');
setclient('boot_07');
// let number = "arebi";
// let sessionCfg;
// const SESSION_FILE_PATH = __dirname + '/../../sessions/' + number + '.json';
// if (fs.existsSync(SESSION_FILE_PATH)) {
// sessionCfg = require(SESSION_FILE_PATH);
// }
// sessions[number] = new Client({
// puppeteer: {
// headless: true,
// qrTimeoutMs: 0,
// userDataDir: __dirname + '/../../sessions/' + number,
// args: [
// '--no-sandbox',
// '--disable-cache',
// '--disable-application-cache',
// '--media-cache-size=0',
// '--disk-cache-size=0',
// '--disable-setuid-sandbox',
// '--disable-dev-shm-usage',
// '--disable-accelerated-2d-canvas',
// '--no-first-run',
// '--no-zygote',
// '--disable-gpu'
// ]
// },
// session: sessionCfg
// });
// sessions[number].initialize();
// console.log("session after initialize "+JSON.stringify(sessions));
Editor is loading...