package org.royaldev.royalbot.commands.impl; import org.pircbotx.hooks.types.GenericMessageEvent; import org.royaldev.royalbot.RoyalBot; import org.royaldev.royalbot.commands.CallInfo; import org.royaldev.royalbot.commands.IRCCommand; import java.util.Set; public class AdminCommand implements IRCCommand { private final RoyalBot rb = RoyalBot.getInstance(); @Override public void onCommand(GenericMessageEvent event, CallInfo callInfo, String[] args) { if (args.length < 1) { event.respond("Not enough arguments."); return; } final String subcommand = args[0]; final String user = (args.length > 1) ? args[1] : null; if (user == null && !subcommand.equalsIgnoreCase("list")) { event.respond("Not enough arguments."); return; } if (rb.getConfig().getSuperAdmin().equalsIgnoreCase(user)) { event.respond("Cannot manipulate the superadmin!"); return; } if (subcommand.equalsIgnoreCase("add")) { final Set<String> admins = rb.getConfig().getAdmins(); admins.add(user); rb.getConfig().setAdmins(admins); event.respond("Added " + user + " as admin."); } else if (subcommand.equalsIgnoreCase("remove")) { if (!rb.getConfig().getAdmins().contains(user)) { event.respond("No such admin."); return; } final Set<String> admins = rb.getConfig().getAdmins(); admins.remove(user); rb.getConfig().setAdmins(admins); event.respond("Removed " + user + " from admins."); } else if (subcommand.equalsIgnoreCase("list")) { final StringBuilder sb = new StringBuilder(); for (String admin : rb.getConfig().getAdmins()) sb.append(admin).append(", "); event.respond("Admins: " + sb.substring(0, sb.length() - 2)); } else { event.respond("Invalid subcommand."); } } @Override public String getName() { return "admin"; } @Override public String getUsage() { return "admin [add/remove/list] (name)"; } @Override public String getDescription() { return "Manipulates the admin list."; } @Override public String[] getAliases() { return new String[]{"admins"}; } @Override public CommandType getCommandType() { return CommandType.PRIVATE; } @Override public AuthLevel getAuthLevel() { return AuthLevel.SUPERADMIN; } }