diff --git a/src/discord/MagicBot.java b/src/discord/MagicBot.java index 8744e3e4..6a94647c 100644 --- a/src/discord/MagicBot.java +++ b/src/discord/MagicBot.java @@ -217,6 +217,9 @@ public class MagicBot extends ListenerAdapter { case "#server": ServerRequestHandler.handleRequest(event, args); break; + case "#dev": + DevRequestHandler.handleRequest(event, args); + break; case "#logs": LogsRequestHandler.handleRequest(event, args); break; @@ -302,7 +305,8 @@ public class MagicBot extends ListenerAdapter { "#setavail true/false Toggle status of database access.\n" + "#server reboot/shutdown are your options.\n" + "#logs magicbot/world/login n (tail)\n" + - "#flash send flash message\n" + + "#flash Send flash message\n" + + "#dev build /restart/debug/shutdown\n" + "#trash /detail/flush"; sendResponse(event, helpString); } diff --git a/src/discord/handlers/DevRequestHandler.java b/src/discord/handlers/DevRequestHandler.java new file mode 100644 index 00000000..e4240e44 --- /dev/null +++ b/src/discord/handlers/DevRequestHandler.java @@ -0,0 +1,68 @@ +// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . +// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· +// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ +// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ +// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ +// Magicbane Emulator Project © 2013 - 2022 +// www.magicbane.com + +package discord.handlers; + +import discord.MagicBot; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import org.pmw.tinylog.Logger; + +import java.io.IOException; + +public class DevRequestHandler { + + public static void handleRequest(MessageReceivedEvent event, String[] args) { + + String serverCommand; + String buildTarget = ""; + String execString = ""; + + // Early exit if database unavailable or is not an admin + + if (MagicBot.isAdminEvent(event) == false) + return; + + // No command supplied? + + if (args.length != 1) + return; + + serverCommand = args[0].toLowerCase().trim(); + + if (args.length == 2) + buildTarget = args[1].toLowerCase().trim(); + + switch (serverCommand) { + + case "build" : + execString = "/bin/sh -c ./mbdevbuild.sh " + buildTarget; + break; + case "reboot": + execString = "/bin/sh -c ./mbdevrestart.sh"; + break; + case "debug": + execString = "/bin/sh -c ./mbdevdebug.sh"; + break; + case "shutdown": + execString = "/bin/sh -c ./mbdevkill.sh"; + break; + default: + break; + } + + if (execString.isEmpty() == false) { + try { + Runtime.getRuntime().exec(execString); + } catch (IOException e) { + e.printStackTrace(); + } + MagicBot.sendResponse(event, "Executed on dev: " + serverCommand + " " + buildTarget); + Logger.info(event.getAuthor().getName() + " told dev to " + serverCommand + " " + buildTarget); + } + } +} \ No newline at end of file