@Override
    public void run() {

        ReceiverBot rb = BotManager.getInstance().receiverBot;
        if (!rb.isConnected() || (rb.checkStalePing() && BotManager.getInstance().monitorPings)) {
            try {
                System.out.println("INFO: Attempting to reconnect receiver");
                rb.disconnect();
                Thread.currentThread().sleep(20000);
                if (!rb.isConnected())
                    rb.reconnect();
            } catch (NickAlreadyInUseException e) {
                System.out.println("Nickname already in use - " + rb.getNick() + " " + rb.getServer());
            } catch (IOException e) {
                System.out.println("Unable to connect to server - " + rb.getNick() + " " + rb.getServer());
            } catch (IrcException e) {
                System.out.println("Error connecting to server - " + rb.getNick() + " " + rb.getServer());
            } catch (InterruptedException e) {
                System.out.println("Threading execption occured - " + rb.getNick() + " " + rb.getServer());
            }
        }

    }