Files
whaticket-community/backend/src/services/wbotMonitor.js

87 lines
1.9 KiB
JavaScript

const Sentry = require("@sentry/node");
const wbotMessageListener = require("./wbotMessageListener");
const { getIO } = require("../libs/socket");
const { getWbot, initWbot } = require("../libs/wbot");
const wbotMonitor = whatsapp => {
const io = getIO();
const sessionName = whatsapp.name;
const wbot = getWbot(whatsapp.id);
try {
wbot.on("change_state", async newState => {
console.log("Monitor session:", sessionName, newState);
try {
await whatsapp.update({ status: newState });
} catch (err) {
Sentry.captureException(err);
console.log(err);
}
io.emit("session", {
action: "update",
session: whatsapp,
});
});
wbot.on("change_battery", async batteryInfo => {
const { battery, plugged } = batteryInfo;
console.log(
`Battery session: ${sessionName} ${battery}% - Charging? ${plugged}`
);
try {
await whatsapp.update({ battery, plugged });
} catch (err) {
Sentry.captureException(err);
console.log(err);
}
io.emit("session", {
action: "update",
session: whatsapp,
});
});
wbot.on("disconnected", async reason => {
console.log("Disconnected session:", sessionName, reason);
try {
await whatsapp.update({ status: "disconnected" });
} catch (err) {
Sentry.captureException(err);
console.log(err);
}
io.emit("session", {
action: "update",
session: whatsapp,
});
setTimeout(
() =>
initWbot(whatsapp)
.then(() => {
wbotMessageListener(whatsapp);
wbotMonitor(whatsapp);
})
.catch(err => {
Sentry.captureException(err);
console.log(err);
}),
2000
);
});
// setInterval(() => {
// wbot.resetState();
// }, 20000);
} catch (err) {
Sentry.captureException(err);
console.log(err);
}
};
module.exports = wbotMonitor;