package tterrag.tppibot.commands;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import org.pircbotx.Channel;
import org.pircbotx.PircBotX;
import org.pircbotx.User;
import tterrag.tppibot.registry.PermRegistry;
import tterrag.tppibot.util.IRCUtils;
public class Perms extends Command {
public Perms() {
super("perms", PermLevel.OP);
}
@Override
public void onCommand(PircBotX bot, User user, Channel channel, List<String> lines, String... args) {
if (args.length < 1) {
lines.add("This command requires at least 1 args, either [nick] or [nick] [perm level (controller, op, or trusted)]");
return;
}
String nick = args[0];
Optional<User> toChange = IRCUtils.getUserByNick(channel, nick);
if (!toChange.isPresent()) {
lines.add("\"" + nick + "\" is not a valid user in this channel!");
return;
}
if (args.length == 1) {
lines.add("Perm level for " + nick + ": " + PermRegistry.INSTANCE.getPermLevelForUser(channel, toChange.get()));
return;
}
PermLevel level = Arrays.stream(PermLevel.getSettablePermLevels()).filter(p -> p.toString().equalsIgnoreCase(args[1])).findFirst().get();
if (level == null) {
lines.add("\"" + args[1] + "\" is not a valid perm level. Valid levels include: " + Arrays.deepToString(PermLevel.getSettablePermLevels()));
return;
}
if (level == PermLevel.CONTROLLER && PermRegistry.INSTANCE.getPermLevelForUser(channel, user) != PermLevel.CONTROLLER) {
lines.add("You must be a controller to give someone controller permissions!");
return;
}
if (PermRegistry.INSTANCE.registerUser(channel, toChange.get(), level)) {
lines.add("Successfully set " + nick + " to the " + level.toString() + " level.");
IRCUtils.modeSensitiveEnqueue(bot, toChange.get(), channel, toChange.get().getNick() + ", "
+ (level == PermLevel.CONTROLLER ? "you are now a controller for TPPIBot!" : "you are now of the level " + level.toString() + " in channel " + channel.getName() + "!"));
} else {
lines.add(args[0] + " is not logged in!");
}
}
@Override
public String getDesc() {
return "Edits the permissions level of the specified user, valid entries are: " + Arrays.deepToString(PermLevel.getSettablePermLevels()) + " (not case sensitive)";
}
@Override
public boolean executeWithoutChannel() {
return false;
}
}