package com.techcavern.wavetact.consoleCommands.network; import com.techcavern.wavetact.annot.ConCMD; import com.techcavern.wavetact.objects.CommandIO; import com.techcavern.wavetact.objects.ConsoleCommand; import com.techcavern.wavetact.utils.GeneralUtils; import com.techcavern.wavetact.utils.IRCUtils; import org.pircbotx.PircBotX; import java.util.concurrent.TimeUnit; @ConCMD public class Connect extends ConsoleCommand { public Connect() { super(GeneralUtils.toArray("connect reconnect disconnect"), "connect [networkname] (reason)", "Connects, reconnects or disconnects a network from a predefined network"); } @Override public void onCommand(String command, String[] args, CommandIO commandIO) throws Exception { boolean reconnect = false; boolean disconnect = false; if (command.equalsIgnoreCase("reconnect")) { reconnect = true; } else if (command.equalsIgnoreCase("disconnect")) { disconnect = true; } PircBotX workingnetwork = IRCUtils.getNetworkByNetworkName(args[0]); if (workingnetwork == null) { commandIO.getPrintStream().println("Network does not exist"); return; } if (reconnect || disconnect) { if (workingnetwork.getState().equals(PircBotX.State.DISCONNECTED)) { commandIO.getPrintStream().println("Bot currently disconnected"); return; } else { commandIO.getPrintStream().println("Disconnecting..."); workingnetwork.sendIRC().quitServer(GeneralUtils.buildMessage(1, args.length, args)); workingnetwork.stopBotReconnect(); } } if (disconnect) { return; } else if (reconnect) { do { TimeUnit.SECONDS.sleep(5); } while (workingnetwork.getState().equals(PircBotX.State.CONNECTED)); } if (workingnetwork.getState().equals(PircBotX.State.CONNECTED)) { commandIO.getPrintStream().println("Bot currently connected"); } else { commandIO.getPrintStream().println("Reconnecting..."); workingnetwork.startBot(); return; } } }