MissingIdentifier/src/main/java/Controll/Admin.java

219 lines
10 KiB
Java

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())+ "`";
}
}