UNPKG

@tioagustian/whatsbot

Version:

A toolkit for working with the WhatsApp Web API

115 lines (109 loc) 2.95 kB
const pm2 = require('pm2'); exports.Daemon = class Daemon { options = {}; constructor(options) { this.options = options; } async start() { return new Promise((resolve, reject) => { const that = this; pm2.connect(function (err) { if (err) { reject(err); process.exit(2); } pm2.start({ script: `${__dirname}/Process.js`, name: that.options.processId, args: [ 'start', that.options.clientName, JSON.stringify(that.options) ], exec_mode: 'cluster_mode', instances: 1, autorestart: false, }); }) pm2.launchBus(function(err, pm2_bus) { pm2_bus.on('process:msg', function(packet) { if (packet.data.status) { resolve(packet); } else if (packet.data.type == 'qr') { console.log(packet.data.qr); } else if(packet.data.type == 'error') { reject(packet); } else { console.log(packet.data.message); } }); }) }); } async stop() { return new Promise((resolve, reject) => { const that = this; pm2.connect(function (err) { if (err) { reject(err); process.exit(2); } pm2.stop(that.options.processId, function (err) { if (err) { pm2.disconnect(); reject(err); } resolve({data: {status: 'offline'}}); }); }) }); } async restart() { return new Promise((resolve, reject) => { const that = this; pm2.connect(function (err) { if (err) { reject(err); process.exit(2); } pm2.restart(that.options.processId, function (err) { if (err) { pm2.disconnect(); reject(err); } }); pm2.launchBus(function(err, pm2_bus) { pm2_bus.on('process:msg', function(packet) { if (packet.data.status) { resolve(packet); } else if (packet.data.type == 'qr') { console.log(packet.data.qr); } else if(packet.data.type == 'error') { reject(packet); } else { console.log(packet.data.message); } }) }); }) }); } async delete() { return new Promise((resolve, reject) => { const that = this; pm2.connect(function (err) { if (err) { reject(err); process.exit(2); } pm2.delete(that.options.processId, function (err) { if (err) { pm2.disconnect(); reject(err); } resolve({data: {status: 'offline'}}); }); }) }); } }