Add ability to restart MC servers from discord for properly roled users
This commit is contained in:
		
							parent
							
								
									fd812da425
								
							
						
					
					
						commit
						bba074bafb
					
				
							
								
								
									
										31
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								index.js
									
									
									
									
									
								
							| 
						 | 
					@ -4,6 +4,7 @@ const Discord = require('discord.js');
 | 
				
			||||||
const Rcon = require('rcon');
 | 
					const Rcon = require('rcon');
 | 
				
			||||||
const Query = require("minecraft-query");
 | 
					const Query = require("minecraft-query");
 | 
				
			||||||
const Server = require('./includes/class_server');
 | 
					const Server = require('./includes/class_server');
 | 
				
			||||||
 | 
					const FS = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const client = new Discord.Client();
 | 
					const client = new Discord.Client();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -96,19 +97,33 @@ client.on('message', async msg => {
 | 
				
			||||||
        msg.channel.send("**Usage:** >>server *slug*");
 | 
					        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) ) {
 | 
					    if ( msg.content.startsWith(">>server ") && Config.CHANNELS_ALLOW.includes(msg.channel.id) ) {
 | 
				
			||||||
        let cmdParts = msg.content.split(" ");
 | 
					        let cmdParts = msg.content.split(" ");
 | 
				
			||||||
        let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
					        let server = Servers.find(element => element.slug == cmdParts[1]);
 | 
				
			||||||
        if ( server ) {
 | 
					        if ( server ) {
 | 
				
			||||||
            let hostStatus = "Offline";
 | 
					            let hostStatus = "Offline";
 | 
				
			||||||
            try {
 | 
					            if (server.hostIsAlive()) hostStatus = "Online";
 | 
				
			||||||
                if (server.hostIsAlive()) hostStatus = "Online";
 | 
					 | 
				
			||||||
            } catch (e) {
 | 
					 | 
				
			||||||
                console.log(e);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            let serverStatus = "Stopped";
 | 
					            let serverStatus = "Stopped";
 | 
				
			||||||
            let serverTPS = "---";
 | 
					            let serverTPS = "---";
 | 
				
			||||||
            if ( server.rconPort != 0 ) {
 | 
					            if ( (hostStatus == "Online") && (server.rconPort != 0) ) {
 | 
				
			||||||
                var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword);
 | 
					                var rcon = new Rcon(server.rconAddress, server.rconPort, server.rconPassword);
 | 
				
			||||||
		        rcon.on('auth', function() {
 | 
							        rcon.on('auth', function() {
 | 
				
			||||||
                    serverStatus = "Running";
 | 
					                    serverStatus = "Running";
 | 
				
			||||||
| 
						 | 
					@ -145,7 +160,9 @@ client.on('message', async msg => {
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                rcon.connect();
 | 
					                rcon.connect();
 | 
				
			||||||
            } else {
 | 
					            } 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);
 | 
					                server.sendDetails(msg.channel, hostStatus, serverStatus, serverTPS);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user