219 lines
10 KiB
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())+ "`";
|
|
}
|
|
}
|