Properly detect PM2 manager process instead of using a hardcoded ID
This commit is contained in:
parent
341f89cda5
commit
c3b97c121e
2 changed files with 56 additions and 42 deletions
73
app.js
73
app.js
|
@ -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;
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue