package uc.protocols.hub;
import java.io.IOException;
import java.util.regex.Pattern;
import uc.protocols.DCProtocol;
import uc.user.User;
/**
* special protocol message for received main chat messages..
*
* @author Quicksilver
*
*/
public class MC extends AbstractNMDCHubProtocolCommand {
private static final Pattern USER = Pattern.compile("<?("+NMDCNICK+")>? ("+TEXT+")");
public MC() {
setPattern(TEXT,true);
}
@Override
public void handle(Hub hub,String command) throws IOException {
matcher = USER.matcher(command);
if (matcher.matches()) {
User usr = hub.getUserByNick( matcher.group(1) );
if (usr != null) {
String message = DCProtocol.reverseReplaces(matcher.group(2));
if (usr.isOp() && message.contains("is kicking ") && message.contains(" because:")) {
message = command;
if (message.contains( "is kicking because:")) {
message = command.replace( "is kicking because:", "").trim();
}
//is kicking because: is sort of the a message targeting at feed..
hub.feedReceived(FeedType.KICK,message);
} else {
hub.mcMessageReceived(usr, message,command.charAt(0) != '<');
}
} else {
hub.mcMessageReceived(null, DCProtocol.reverseReplaces(command),true);
}
} else {
hub.mcMessageReceived(null, DCProtocol.reverseReplaces(command),true);
}
}
@Override
public String getPrefix() {
return "MC";
}
public static void sendMainchatMessage(Hub hub,String message, boolean me) {
String msg = DCProtocol.doReplaces(message);
String nick = hub.getSelf().getNick();
if (me) {
hub.sendUnmodifiedRaw("<"+nick+"> +me "+msg+"|");
} else {
hub.sendUnmodifiedRaw("<"+nick+"> "+msg+"|");
}
}
}