kiafumi/src/main/java/moe/oko/Kiafumi/command/moderation/ModCommand.java

112 lines
4.3 KiB
Java

package moe.oko.Kiafumi.command.moderation;
import moe.oko.Kiafumi.Kiafumi;
import moe.oko.Kiafumi.command.CommandClass;
import moe.oko.Kiafumi.model.Server;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.CommandType;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import java.util.ArrayList;
import java.util.List;
import static moe.oko.Kiafumi.Kiafumi.slashLog;
/**
* For use on Guilds that tend to get TOS'd with ease. Also just basic server protection
* @author Kay
* (Requires Permission.ADMINISTRATOR to function properly)
*/
@Deprecated
public class ModCommand extends CommandClass {
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getName() {
return "Moderation";
}
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
if(e.getGuild() == null) { return; }
var server = Kiafumi.instance.getServerManager().getOrCreateServer(e.getGuild());
switch (name) {
case "mod":
slashLog(e);
e.deferReply(true).queue();
if(server.isServerProtected()) {
// Start check.
if(server.getModRole() != null) {
if(e.getMember().isOwner()) {
e.getHook().sendMessage("*Owners cannot run this command.*").queue();
return;
}
if(hasModRole(e.getMember(), server)) {
if(isAdmin(e.getMember())) {
// They already have the admin role... So we try removing our mod role in case thats it
removeModRole(e.getMember());
e.getHook().sendMessage("**Admin Mode Disabled.**").queue();
} else {
if(applyModRole(e.getMember())) {
e.getHook().sendMessage("**Admin Mode Enabled.**").queue();
}
}
}
return;
} else {
e.getHook().sendMessage("*This server does not have a moderator role set.*").queue();
return;
}
} else {
e.getHook().sendMessage("*This server does not have protection enabled. This command will not function.*").queue();
return;
}
}
}
public boolean isAdmin(Member member) {
return member.hasPermission(Permission.ADMINISTRATOR);
}
public boolean hasModRole(Member member, Server server) {
return member.getRoles().contains(Kiafumi.JDA.getRoleById(server.getModRole()));
}
public boolean applyModRole(Member member) {
if(member.getGuild().getRolesByName("senior citizen", true).get(0) != null) {
member.getGuild().addRoleToMember(member, member.getGuild().getRolesByName("senior citizen", true).get(0)).queue();
return true;
} else {
// Create, role doesn't exist
member.getGuild().createRole()
.setColor(EmbedUI.INFO)
.setName("senior citizen")
.setPermissions(Permission.ADMINISTRATOR)
.setMentionable(false)
.setHoisted(true)
.complete();
// should be created so rerun
return applyModRole(member);
}
}
public void removeModRole(Member member) {
if(member.getGuild().getRolesByName("senior citizen", true).get(0) != null) {
member.getGuild().removeRoleFromMember(member, member.getGuild().getRolesByName("senior citizen", true).get(0)).queue();
} // Role must've been deleted otherwise, :thinking:
}
@Override
public List<CommandInfo> getSlashCommandInfo() {
List<CommandInfo> cil = new ArrayList<>();
cil.add(new CommandInfo("mod", "Toggles administrative permissions you.", CommandType.COMMAND));
return cil;
}
}