Skip to content

Commit

Permalink
Added admin dash warning system
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter-Maguire committed Jan 27, 2019
1 parent 4608839 commit e792576
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 10 deletions.
69 changes: 59 additions & 10 deletions broker.js
Expand Up @@ -15,13 +15,17 @@ const manager = new ShardingManager(`${__dirname}/ocelotbot.js`, config.get("Dis
let shardDeathCount = [];
let shardDeathTimeout = [];


let warnings = [];

manager.spawn();

manager.on('launch', function launchShard(shard) {
logger.log(`Successfully launched shard ${shard.id+1}/${manager.totalShards} (ID: ${shard.id})`);

shardDeathCount[shard.id] = 0;

return;
shard.on('death', function(){
logger.warn(`Shard ${shard.id} died.`);

Expand Down Expand Up @@ -56,6 +60,18 @@ manager.on('message', function onMessage(process, message){
}
return;
}

if(message.type === "warning"){
let warning = message.payload;
warnings[warning.id] = warning.message;
return;
}

if(message.type === "clearWarning"){
delete message.payload.id;
return;
}

logger.log("Broadcasting message");
manager.broadcast(message);
}
Expand Down Expand Up @@ -89,6 +105,15 @@ app.get('/commands', function(req, res){
res.json(commandList);
});

app.get('/restart', function(req, res){
res.json({});
process.exit(0);
});

app.get('/warnings', function(req, res){
res.json(warnings);
});

app.get('/shard/count', function(req, res){
res.json({count: manager.totalShards});
});
Expand All @@ -104,6 +129,18 @@ app.get('/server/:id/channels', function(req, res){
}, {server: req.params.id});
});


app.get('/shard', function(req, res){
let output = [];
manager.shards.forEach(function(shard){
output.push({
id: shard.id,
ready: shard.ready
});
});
res.json(output);
});

app.get('/shard/:id', function(req, res){
const shard = manager.shards.get(manager.shards.keyArray()[req.params.id]);
if(shard) {
Expand All @@ -116,25 +153,37 @@ app.get('/shard/:id', function(req, res){
}
});

app.get('/user/:id/registerVote', function(req, res){
console.log("Got vote from "+req.params.id);
manager.broadcast({type: "registerVote", payload: {
user: req.params.id
}});
res.json({});
app.get('/shard/:id/restart', function(req, res){
const shard = manager.shards.get(manager.shards.keyArray()[req.params.id]);
if(shard) {
shard.respawn();
res.json({success: true});
}else{
res.json({success: false});
}
});

app.post('/shard/:id/restart', function(req, res){
app.get('/shard/:id/:field', function(req, res){
const shard = manager.shards.get(manager.shards.keyArray()[req.params.id]);
if(shard) {
shard.respawn();
res.json({success: true});
requestData(req.params.field, function(resp){
res.json(resp);
}, {shard: req.params.id});
}else{
res.json({success: false});
res.json({});
}
});


app.get('/user/:id/registerVote', function(req, res){
console.log("Got vote from "+req.params.id);
manager.broadcast({type: "registerVote", payload: {
user: req.params.id
}});
res.json({});
});


app.listen(port, "127.0.0.1", function(){
logger.log(`Running broker API server on ${port}`);
});
Expand Down
8 changes: 8 additions & 0 deletions ocelotbot.js
Expand Up @@ -108,6 +108,14 @@ function loadModules(){
//Modules that depend on the failed module's functions will probably also fail too.
logger.error(`Error loading ${fileName}:`);
console.error(e);
if(bot.client && bot.client.shard) {
bot.client.shard.send({
type: "warning", payload: {
id: "badModule-" + fileName,
message: `Couldn't load module ${module}:\n${e.message}`
}
});
}
}
}
}
Expand Down

0 comments on commit e792576

Please sign in to comment.