package com.techcavern.wavetact.ircCommands.misc;
import com.techcavern.wavetact.annot.IRCCMD;
import com.techcavern.wavetact.objects.IRCCommand;
import com.techcavern.wavetact.utils.GeneralUtils;
import com.techcavern.wavetact.utils.IRCUtils;
import com.techcavern.wavetact.utils.Registry;
import org.apache.commons.lang3.StringUtils;
import org.pircbotx.Channel;
import org.pircbotx.PircBotX;
import org.pircbotx.User;
import java.util.HashSet;
import java.util.Set;
@IRCCMD
public class ListNetworks extends IRCCommand {
public ListNetworks() {
super(GeneralUtils.toArray("listnetworks ln netlist"), 0, "listnetworks (connected/disconnected)", "Lists the networks a bot is on", false);
}
@Override
public void onCommand(String command, User user, PircBotX network, String prefix, Channel channel, boolean isPrivate, int userPermLevel, String... args) throws Exception {
Set<String> networks = new HashSet<>();
for (PircBotX net : Registry.networks.inverse().keySet()) {
if (args.length < 1) {
networks.add(IRCUtils.getNetworkNameByNetwork(net));
} else if (args[0].equalsIgnoreCase("connected")) {
if (net.getState().equals(PircBotX.State.CONNECTED))
networks.add(IRCUtils.getNetworkNameByNetwork(net));
} else if (args[0].equalsIgnoreCase("disconnected")) {
if (net.getState().equals(PircBotX.State.DISCONNECTED))
networks.add(IRCUtils.getNetworkNameByNetwork(net));
} else {
networks.add(IRCUtils.getNetworkNameByNetwork(net));
}
}
if (networks.isEmpty())
IRCUtils.sendError(user, network, channel, "No networks found" + networks, prefix);
else
IRCUtils.sendMessage(user, network, channel, Registry.networks.size() + " network(s) found: " + StringUtils.join(networks, ", "), prefix);
}
}