package tterrag.tppibot.commands; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; import org.pircbotx.Channel; import org.pircbotx.PircBotX; import org.pircbotx.User; import org.pircbotx.hooks.events.DisconnectEvent; import tterrag.tppibot.config.Config; import tterrag.tppibot.runnables.MessageSender; import tterrag.tppibot.util.IRCUtils; import com.google.common.base.Joiner; import com.google.common.base.Strings; import com.google.common.eventbus.Subscribe; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class Rekt extends Command { private final String PREFIX = "\u2610 Not REKT"; private final String[] REKT_DEFAULT = { "\u2611 REKT", "\u2611 REKTangle", "\u2611 SHREKT", "\u2611 REKT-it Ralph", "\u2611 Total REKTall", "\u2611 The Lord of the REKT", "\u2611 Tyrannosaurus REKT", "\u2611 9.0 on the REKTer scale", "\u2611 Shrexamination", "\u2611 ShreX marks the spot", "\u2611 A Game of Rekt", "\u2611 The Rekt Prince of Bel-Air", "\u2611 Star Wars: Episode VI - Return of the Rekt", "\u2611 Erektile Dysfunction", "\u2611 2001: A Rekt Odyssey", "\u2611 Harry Potter: The Half-Rekt Prince" }; private ArrayList<String> rektEntries = new ArrayList<>(); private Config rektConfig; public Rekt() { super("rekt"); rektConfig = new Config("rektEntries.json"); if (Strings.isNullOrEmpty(rektConfig.getText())) { rektEntries.addAll(Arrays.asList(REKT_DEFAULT)); rektConfig.writeJsonToFile(rektEntries); } else { rektEntries = new Gson().fromJson(rektConfig.getText(), new TypeToken<ArrayList<String>>() { }.getType()); } } @Override public void onCommand(PircBotX bot, User user, Channel channel, List<String> lines, String... args) { Random random = new Random(); if (args.length == 0) { lines.add(String.format("%s %s", PREFIX, rektEntries.get(random.nextInt(rektEntries.size())))); return; } if (IRCUtils.isUserAboveOrEqualTo(channel, PermLevel.TRUSTED, user)) { if (args.length == 1 && args[0].equals("list")) { String ret = Joiner.on(", ").join(rektEntries); MessageSender.INSTANCE.enqueueNotice(bot, user.getNick(), ret); return; } else if (args.length >= 2) { String rektString = Joiner.on(' ').join(args); switch (args[0]) { case "add": { if (!rektEntries.contains(rektString)) { rektEntries.add(rektString); lines.add(String.format("Successfully added entry \"%s\"", rektString)); } else { lines.add(String.format("Could not add entry \"%s\"", rektString)); } return; } case "del": { if (rektEntries.contains(rektString)) { rektEntries.remove(rektString); lines.add(String.format("Successfully removed entry \"%s\"", rektString)); } else { lines.add(String.format("Could not remove entry \"%s\"", rektString)); } return; } default: return; } } } MessageSender.INSTANCE.enqueueNotice(bot, user.getNick(), String.format("You have no permission, you must be at least: %s", PermLevel.TRUSTED)); } @Override public String getDesc() { return "Returns the state in which the user is."; } @Override public boolean shouldReceiveEvents() { return true; } @Subscribe public void onDisconnect(DisconnectEvent<PircBotX> event) { rektConfig.writeJsonToFile(rektEntries); } }