diff --git a/index.js b/index.js index 9f11a01..a94fd73 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const Discord = require('discord.js'); const Rcon = require('rcon'); const Query = require("minecraft-query"); const Server = require('./includes/class_server'); +const FS = require('fs'); const client = new Discord.Client(); @@ -96,19 +97,33 @@ client.on('message', async msg => { msg.channel.send("**Usage:** >>server *slug*"); } + if ( msg.content.startsWith(">>restart") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) { + if ( msg.member.roles.cache.has(Config.RESTART_ROLE) ) { + let cmdParts = msg.content.split(" "); + let server = Servers.find(element => element.slug == cmdParts[1]); + let restartFile = '/automation/mcrestart/' + server.slug + '.restart'; + FS.stat(restartFile, function(err, stat) { + if ( err == null ) { + msg.channel.send("**Warning:** " + server.name + " is already queued for a restart"); + } else if ( err.code === 'ENOENT' ) { + FS.closeSync(FS.openSync(restartFile, 'w')); + msg.channel.send("**Notice:** " + server.name + " queued for restart by " + msg.author.username); + } + }); + } else { + msg.channel.send("**Error:** You do not have permission to restart servers"); + } + } + if ( msg.content.startsWith(">>server ") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) { let cmdParts = msg.content.split(" "); let server = Servers.find(element => element.slug == cmdParts[1]); if ( server ) { let hostStatus = "Offline"; - try { - if (server.hostIsAlive()) hostStatus = "Online"; - } catch (e) { - console.log(e); - } + if (server.hostIsAlive()) hostStatus = "Online"; let serverStatus = "Stopped"; let serverTPS = "---"; - if ( server.rconPort != 0 ) { + if ( (hostStatus == "Online") && (server.rconPort != 0) ) { var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword); rcon.on('auth', function() { serverStatus = "Running"; @@ -145,7 +160,9 @@ client.on('message', async msg => { }); rcon.connect(); } else { - console.log("No rcon settings for: " + server.name); + if ( server.rconPort != 0 ) { + console.log("No rcon settings for: " + server.name); + } server.sendDetails(msg.channel, hostStatus, serverStatus, serverTPS); } } else {