package jerklib.examples; import jerklib.Channel; import jerklib.ConnectionManager; import jerklib.Profile; import jerklib.Session; import jerklib.events.ConnectionCompleteEvent; import jerklib.events.JoinCompleteEvent; import jerklib.events.MessageEvent; import jerklib.listeners.DefaultIRCEventListener; public class DefaultListenerExample extends DefaultIRCEventListener implements Runnable { public DefaultListenerExample() { } Session session; //TODO: change this as to not spam our channel static final String CHANNEL_TO_JOIN = "#jerklib"; public void run() { ConnectionManager manager = new ConnectionManager(new Profile("ble", "ble", "ble_", "ble__")); session = manager.requestConnection("irc.freenode.net"); session.addIRCEventListener(this); } @Override protected void handleJoinCompleteEvent(JoinCompleteEvent event) { event.getChannel().say("Hello from BaseListenerExample"); } @Override protected void handleConnectComplete(ConnectionCompleteEvent event) { event.getSession().join(CHANNEL_TO_JOIN); } @Override protected void handleChannelMessage(MessageEvent event) { log.info(event.getChannel().getName() + ":" + event.getNick() + ":" + event.getMessage()); if ("now die".equalsIgnoreCase(event.getMessage())) { event.getChannel().say("Okay, fine, I'll die"); try { Thread.sleep(2000); } catch (InterruptedException e) { // *nothing* } System.exit(0); } } public static void main(String[] args) { DefaultListenerExample ble = new DefaultListenerExample(); Thread t = new Thread(ble); t.start(); try { Thread.sleep(30000L); // give it the axe in 30! } catch (InterruptedException e) { // *nothing* } ble.sayGoodbye(); try { Thread.sleep(5000); // let the message be written! } catch (InterruptedException e) { // *nothing* } System.exit(0); } private void sayGoodbye() { for (Channel chan : session.getChannels()) { chan.say("I'm melting! (built-in sword of Damocles... or bucket of water, whatever)"); } } }