package de.ctdo.crashtest.cardplayer.irc; import jerklib.Channel; import jerklib.ConnectionManager; import jerklib.ProfileImpl; import jerklib.Session; import jerklib.events.ChannelMsgEvent; import jerklib.events.ConnectionCompleteEvent; import jerklib.events.IRCEvent; import jerklib.events.JoinCompleteEvent; import java.util.ArrayList; import java.util.List; /** * IRC Client wrapper * simplifies communication with the de.ctdo.crashtest.cardplayer.irc channel */ public class IrcClient implements IIrcClient, jerklib.events.listeners.IRCEventListener { private final List listenerListIRC = new ArrayList(); private Session ircsession; private final String channel; private boolean joined = false; public IrcClient(String nick, String channel, String server) { this.channel = channel; ConnectionManager ircConnection = new ConnectionManager(new ProfileImpl(nick,nick, nick+2, nick+3)); ircsession = ircConnection.requestConnection(server); ircsession.addIRCEventListener(this); } @Override public void recieveEvent(IRCEvent ircEvent) { if(ircEvent instanceof ConnectionCompleteEvent) { ircEvent.getSession().joinChannel(channel); System.out.println("connected"); } else if (ircEvent instanceof JoinCompleteEvent) { JoinCompleteEvent jce = (JoinCompleteEvent) ircEvent; jce.getChannel().say("hello master. what's your order?"); System.out.println("joined"); joined = true; } else if(ircEvent instanceof ChannelMsgEvent) { ChannelMsgEvent cme = (ChannelMsgEvent)ircEvent; String message = cme.getMessage(); final String nick = ircsession.getNick(); if(message.contains(nick)) { message = message.substring(Math.max(nick.length(), message.indexOf(":")+1)); message = message.trim(); for(IRCEventListener listenerIRC : listenerListIRC) { listenerIRC.handleMessage(message); } } } } @Override public void say(String message) { if(ircsession != null && joined) { for(Channel chan: ircsession.getChannels()) { chan.say(message); } } } @Override public void addListener(final IRCEventListener listenerIRC) { listenerListIRC.add(listenerIRC); } }