Properly detect PM2 manager process instead of using a hardcoded ID

This commit is contained in:
Essem 2022-10-30 23:16:03 -05:00
parent 341f89cda5
commit c3b97c121e
No known key found for this signature in database
GPG Key ID: 7D497397CC3A2A8C
2 changed files with 56 additions and 42 deletions

73
app.js
View File

@ -164,45 +164,52 @@ esmBot ${esmBotVersion} (${process.env.GIT_REV})
// PM2-specific handling // PM2-specific handling
if (process.env.PM2_USAGE) { if (process.env.PM2_USAGE) {
// callback hell :)
pm2.launchBus((err, pm2Bus) => { pm2.launchBus((err, pm2Bus) => {
if (err) { if (err) {
logger.error(err); logger.error(err);
return; return;
} }
pm2.list((err, list) => {
pm2Bus.on("process:msg", async (packet) => { if (err) {
switch (packet.data?.type) { logger.error(err);
case "reload": return;
var path = paths.get(packet.data.message);
await load(client, path, true);
break;
case "soundreload":
await reload(client);
break;
case "imagereload":
await reloadImageConnections();
break;
case "broadcastStart":
startBroadcast(client, packet.data.message);
break;
case "broadcastEnd":
endBroadcast(client);
break;
case "serverCounts":
pm2.sendDataToProcessId(0, {
id: 0,
type: "process:msg",
data: {
type: "serverCounts",
guilds: client.guilds.size,
shards: client.shards.size
},
topic: true
}, (err) => {
if (err) logger.error(err);
});
break;
} }
const managerProc = list.filter((v) => v.name === "esmBot-manager")[0];
pm2Bus.on("process:msg", async (packet) => {
switch (packet.data?.type) {
case "reload":
var path = paths.get(packet.data.message);
await load(client, path, true);
break;
case "soundreload":
await reload(client);
break;
case "imagereload":
await reloadImageConnections();
break;
case "broadcastStart":
startBroadcast(client, packet.data.message);
break;
case "broadcastEnd":
endBroadcast(client);
break;
case "serverCounts":
pm2.sendDataToProcessId(managerProc.pm_id, {
id: managerProc.pm_id,
type: "process:msg",
data: {
type: "serverCounts",
guilds: client.guilds.size,
shards: client.shards.size
},
topic: true
}, (err) => {
if (err) logger.error(err);
});
break;
}
});
}); });
}); });
} }

View File

@ -98,15 +98,22 @@ export function getServers(bot) {
}; };
pm2Bus.on("process:msg", listener); pm2Bus.on("process:msg", listener);
}); });
pm2.sendDataToProcessId(0, { pm2.list((err, list) => {
id: 0, if (err) {
type: "process:msg", reject(err);
data: { return;
type: "getCount" }
}, const managerProc = list.filter((v) => v.name === "esmBot-manager")[0];
topic: true pm2.sendDataToProcessId(managerProc.pm_id, {
}, (err) => { id: managerProc.pm_id,
if (err) reject(err); type: "process:msg",
data: {
type: "getCount"
},
topic: true
}, (err) => {
if (err) reject(err);
});
}); });
} else { } else {
resolve(bot.guilds.size); resolve(bot.guilds.size);