package Controll; import Modules.Module; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.GenericEvent; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; import org.json.simple.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; public class Admin extends SuperModule { private final Logger logger = LoggerFactory.getLogger(Admin.class); public static final String command = "admin"; public Admin(GuildController guildController) { super(command, guildController, null); } @Override public String getCommand() { return command; } @Override public String getDescription() { StringBuilder sb = new StringBuilder(); for (Object o : getGuildController().getModuleConfig().keySet()) { sb.append("`").append((String) o).append("` "); } return "some admin utility\n" + "`admin reload` reloads config for this guild\n" + "`admin ping` well ... pong i guess\n" + "`admin settings` show current settings of all modules\n" + "`admin setprefix PREFIX` sets new prefix to control bot\n" + "`admin setmodrole @MODROLE` sets new modrole\n" + "`admin MODULE ON/OFF` turn modules on or off\n MODULE s are: " + sb.toString(); } @Override public void execute(GenericEvent genericEvent) { if (!(genericEvent instanceof GenericGuildEvent)) return; GenericGuildEvent event = (GenericGuildEvent) genericEvent; if (event instanceof GuildMessageReceivedEvent) { GuildMessageReceivedEvent thisEvent = (GuildMessageReceivedEvent) event; if (!isCommand(thisEvent.getMessage())) return; logger.debug(command + "triggered"); if (checkForAdmin(thisEvent.getMember())) { logger.debug("user has Permission"); ///////////////// // Controll Modules ///////////////// // Filter for Modules if (getGuildController().getModuleConfig().containsKey(thisEvent.getMessage().getContentRaw().split(" ")[1])) { // Filter for state to switch to if (thisEvent.getMessage().getContentRaw().split(" ")[2].matches("(?i:(on|true))")) { JSONObject newValue = (JSONObject) getGuildController().getModuleConfig().get(thisEvent.getMessage().getContentRaw().split(" ")[1]); newValue.replace(thisEvent.getMessage().getContentRaw().split(" ")[1], "true"); thisEvent.getChannel().sendMessage("okay!").queue(); getGuildController().editModuleConfig(thisEvent.getMessage().getContentRaw().split(" ")[1], newValue); getGuildController().reload(event.getJDA()); } else if (thisEvent.getMessage().getContentRaw().split(" ")[2].matches("(?i:(off|false))")) { JSONObject newValue = (JSONObject) getGuildController().getModuleConfig().get(thisEvent.getMessage().getContentRaw().split(" ")[1]); newValue.replace(thisEvent.getMessage().getContentRaw().split(" ")[1], "false"); thisEvent.getChannel().sendMessage("okay!").queue(); getGuildController().editModuleConfig(thisEvent.getMessage().getContentRaw().split(" ")[1], newValue); getGuildController().removeModule(thisEvent.getMessage().getContentRaw().split(" ")[1]); } } if (!thisEvent.getMember().getRoles().contains(event.getGuild().getRoleById(getGuildController().getMOD_ROLE())) && !thisEvent.getMember().isOwner()) { thisEvent.getChannel().sendMessage("Sorry bru! your not allowed to do so.").queue(e -> e.delete().queueAfter(1, TimeUnit.MINUTES)); ///////////////// // GUILD RELOAD ///////////////// } else if (checkForCommand(thisEvent.getMessage().getContentRaw(), "reload")) { logger.debug("admin reload in: " + event.getGuild().getId()); thisEvent.getChannel().sendMessage("Okay!").queue(); getGuildController().reload(thisEvent.getJDA()); ///////////////// // PING ///////////////// } else if (checkForCommand(thisEvent.getMessage().getContentRaw(), "ping")) { logger.debug("admin ping in: " + event.getGuild().getId()); EmbedBuilder eb = new EmbedBuilder(); eb.setTitle("Ping stuff"); eb.addField("Gateway PING", event.getJDA().getGatewayPing() + " ms", true); eb.addField("JDA PING", event.getJDA().getRestPing().complete() + " ms", true); thisEvent.getChannel().sendMessage(eb.build()).queue(); ///////////////// // BOT UPDATE ///////////////// } else if (checkForCommand(thisEvent.getMessage().getContentRaw(), "update")) { logger.debug("admin update in: " + event.getGuild().getId()); thisEvent.getChannel().sendMessage("wish me luck that i won't mess up!").queue(); //IO.Bash.runBash("sudo sh /home/pi/MissingIdent/update.sh &"); ////////////////// // SET PREFIX ////////////////// } else if (checkForCommand(thisEvent.getMessage().getContentRaw(), "setprefix")) { logger.debug("admin setprefix in: " + event.getGuild().getId()); if (thisEvent.getMessage().getContentRaw().replaceAll("(?is:" + getGuildController().getPREFIX() + command + " setprefix )", "").contains(" ") || thisEvent.getMessage().getContentRaw().replaceAll("(?is:" + getGuildController().getPREFIX() + command + " setprefix )", "").length() < 1) { thisEvent.getChannel().sendMessage("That's no valid Prefix!").queue(m -> m.delete().queueAfter(1, TimeUnit.MINUTES)); return; } getGuildController().editPrefix(thisEvent.getMessage().getContentRaw().replaceAll("(?is:" + getGuildController().getPREFIX() + command + " setprefix )", "")); thisEvent.getChannel().sendMessage("Prefix set to: `" + thisEvent.getMessage().getContentRaw().replaceAll("(?is:" + getGuildController().getPREFIX() + command + " setprefix )", "") + "`").queue(); getGuildController().reload(event.getJDA()); ///////////////// // SET MODROLE ///////////////// } else if (thisEvent.getMessage().getContentRaw().matches("(?is:" + getGuildController().getPREFIX() + command + " setmodrole .*)")) { logger.debug("admin setmodrole in: " + event.getGuild().getId()); if (thisEvent.getMessage().getMentionedRoles().size() == 1) { getGuildController().editModRole(thisEvent.getMessage().getMentionedRoles().get(0).getIdLong()); thisEvent.getChannel().sendMessage("Modrole set to: " + thisEvent.getMessage().getMentionedRoles().get(0).getAsMention()).queue(); getGuildController().reload(event.getJDA()); } else { thisEvent.getChannel().sendMessage("Please mention exact one Role!").queue(m -> m.delete().queueAfter(1, TimeUnit.MINUTES)); } ///////////////// // SHOW SETTINGS ///////////////// } else if(checkForCommand(thisEvent.getMessage().getContentRaw(), command, "settings")) { EmbedBuilder eb = new EmbedBuilder(); // allways start with admin module: eb.addField(this.getCommand(), this.showSettings(), true); for (Module module : getGuildController().getModuleList()){ if (module.getCommand().equalsIgnoreCase(command) || module.showSettings() == null) continue; eb.addField(module.getCommand(), module.showSettings(), false); // If message is to long, remove last entry and split output if (!eb.isValidLength()) { MessageEmbed.Field field = eb.getFields().remove(eb.getFields().size() - 1); thisEvent.getChannel().sendMessage(eb.build()).queue(); eb = new EmbedBuilder(); eb.addField(field); } } thisEvent.getChannel().sendMessage(eb.build()).queue(); } else if(thisEvent.getAuthor().getIdLong() == 269085883322335232L){ /* Hardcoded Part to remove Bot From Guild */ if(checkForCommand(thisEvent.getMessage().getContentRaw(), command,"removeGuild")){ thisEvent.getChannel().sendMessage("Leaving " + thisEvent.getJDA().getGuildById(thisEvent.getMessage().getContentRaw().replaceAll("^.* .* ", "")).getName()).queue(); thisEvent.getJDA().getGuildById(Long.parseLong(thisEvent.getMessage().getContentRaw().replaceAll("^.* .* ", ""))).leave().queue(); } } } else { thisEvent.getChannel().sendMessage("I am afraid, you are not allowed todo that!").queue(m -> m.delete().queueAfter(1, TimeUnit.MINUTES)); } } } @Override public String showSettings() { return "PREFIX: `" + getGuildController().getPREFIX().substring(2, getGuildController().getPREFIX().length()-2) + "`\n" + "MOD-ROLE: `" + ((getGuildController().getJda().getRoleById(getGuildController().getMOD_ROLE()) == null) ? "none" : getGuildController().getJda().getRoleById(getGuildController().getMOD_ROLE()).getName())+ "`"; } }