crashtest-player/src/de/ctdo/crashtest/cardplayer/irc/IrcClient.java

76 lines
2.5 KiB
Java

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<IRCEventListener> listenerListIRC = new ArrayList<IRCEventListener>();
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);
}
}