timeToArrive = makeTime(reminder.timeToArrive) + " from now"; con.getIRCIO().privmsg(recipient, killed + " removed for " + reminder.target + " " + makeTime(reminder.timeSent) + " ago for " + timeToArrive + ": " + reminder.message);
timeToArrive = " for " + makeTime(reminder.timeToArrive) + " from now"; con.getIRCIO().privmsg(recipient, "Message removed for " + reminder.target + timeToArrive + ": " + reminder.message);
	public void messagePrivMsg(IRCConnection con, String nick, String host, String recipient, String origmsg) {		boolean pm = false;		String log;		String msg = origmsg;		if (iregex("^"+data.getName(con.getIndex())+"-*$", recipient)) {			recipient = nick;			pm = true;		}		log = "<" + nick + "> ";		log += msg.substring(0, msg.length());		con.logfile(recipient, log);		msg = msg.trim();		data.updateUserTimes(nick, host, con.getServer(), recipient);		checkForMessages(con, nick, host, recipient);		checkForBlacklist(con, nick, host, recipient);		con.updateHistory(nick, msg);				String name = data.getName(con.getIndex());		//Say hello!		int nameEnd = name.length() < 4 ? name.length() : 4;		if (iregex(name.substring(0, nameEnd), msg)) {			if (data.matchHellos(msg)) {				if (System.currentTimeMillis() > nextHi) {  //!spam					con.getIRCIO().privmsg(recipient, data.getRandomHelloReply());					nextHi = System.currentTimeMillis() + 500;					return;				}			}		}		StringTokenizer tok = new StringTokenizer(msg, ",: ");		String botname;		if (!pm && tok.hasMoreElements()) {			botname = tok.nextToken();		} else {			botname = "";		}		if (pm || talkingToMe(msg, data.getName(con.getIndex()))) {			//Remove the bot's name			if (!pm)				msg = msg.replaceFirst(botname + "[,: ]+", "");			if (iregex("bring out the strapon", msg)) {				con.getIRCIO().privemote(recipient, "steps forward with a large strapon and begins mashing potatoes.");				return;			}			msg = data.removePunctuation(msg, ".?!");			//BEGIN COLLOQUIAL COMMANDS			//These commands can be used anywhere if the bot's name is spoken first.			if (iregex("^who are you\\W*$", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "I am an advanced SephiaBot channel bot.");					con.getIRCIO().privmsg(recipient, "I'll kick your " + (censor(con)?"butt":"ass") + " in days that end in 'y'.");					con.getIRCIO().privmsg(recipient, "I was written by Vino. Vino rocks.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if ( iregex("^what does marsellus wallace look like\\W*$", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "He's black.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^who (wrote|made|programmed|coded|created) you\\W*$", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "I was written by Vino. Vino rocks.");					con.getIRCIO().privmsg(recipient, "Nilbus helped too.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^who('s| is) here\\W*$", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					int channum = channelNumber(con.getIndex(), recipient);					if (channum == -1 || pm) {						con.getIRCIO().privmsg(recipient, "It's just you and me in a PM, buddy.");						nextWho = System.currentTimeMillis() + SPAM_WAIT;					} else {						StringBuffer buf = new StringBuffer("Users in this channel:");						IRCUser current = con.getServer().channels[channum].users;						for (IRCUser curr = con.getServer().channels[channum].users; curr != null; curr = curr.next) {							buf.append(" " + curr.name);						}						con.getIRCIO().privmsg(recipient, buf.toString());						nextWho = System.currentTimeMillis() + SPAM_WAIT;					}				}				return;			} else if (iregex("^who('s| is)", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					String whoisName = msg.substring(msg.lastIndexOf(' ')+1, msg.length());					if (talkingToMe(whoisName, data.getName(con.getIndex())))						con.getIRCIO().privmsg(recipient, "I am an advanced SephiaBot channel bot.");					else {						User target = data.getUserByName(whoisName);						if (target == null)							con.getIRCIO().privmsg(recipient, "Nobody important.");						else							con.getIRCIO().privmsg(recipient, target.description);					}					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^(are you|you( a|')re) (sexy|h(o|aw)t|beautiful|awesome|cool|swell)", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					String compliment = data.iregexFind("(sexy|h(o|aw)t|beautiful|awesome|cool|swell)", msg);					if (censor(con))						if (compliment.equals("sexy"))							con.getIRCIO().privmsg(recipient, "I'm too sexy for my shirt!");						else							con.getIRCIO().privmsg(recipient, "I am so " + compliment + ".");					else						con.getIRCIO().privmsg(recipient, "Fuck yes.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (!censor(con) && iregex("^wan(na |t to )cyber", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					User user = data.getUserByNick(connections, nick);					if (data.isVino(host) || user != null && iequals(user.userName, "Yukie")) {						con.getIRCIO().privmsg(recipient, "Take me, " + nick + "!");					} else {						con.getIRCIO().privmsg(recipient, "Fuck no.");					}					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^wh?[aeu]re?('?[sz]| i[sz]| si| be?)( m(a[ih]|y))?", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					String targetName = msg.substring(msg.lastIndexOf(' ')+1, msg.length());					targetName = data.removePunctuation(targetName, "!?,");					boolean foundAway = false;					if (iregex("eve?ry(b(o|ud)dy|(1|one?))", targetName)) {						//Find out where everybody is and tell the channel.						for (int i = 0; i < data.getNumUsers(); i++) {							User user = data.getUser(i);							//Do not display away message if the person has not logged in for a while.							if (user.away != null && data.timeInWeeks(user.lastTalked, System.currentTimeMillis()) < 1) {								con.getIRCIO().privmsg(recipient, user.userName + " has been " + user.away + " for " + makeTime(user.leaveTime) + ".");								foundAway = true;							}						}						if (!foundAway)							con.getIRCIO().privmsg(recipient, "Everyone is present and accounted for.");						return;					}					if (iequals(targetName, botname))						return;					User target = data.getUserByNick(connections, targetName);					if (target == null) {						con.getIRCIO().privmsg(recipient, "Like I know.");						return;					} else						targetName = target.userName; //use correct caps					if (target.away == null) {						if (target.lastTalked > 0)							con.getIRCIO().privmsg(recipient, "I don't know, the last time they said anything was " + makeTime(target.lastTalked) + " ago.");						else							con.getIRCIO().privmsg(recipient, "I don't know.");					} else {						con.getIRCIO().privmsg(recipient, targetName + " is " + target.away + ". " + targetName + " has been gone for " + makeTime(target.leaveTime) + ".");					}					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^who am i", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					User target = data.getUserByHost(host);					if (data.isVino(host)) {						con.getIRCIO().privmsg(recipient, "Daddy!");						con.getIRCIO().privemote(recipient, "hugs " + nick + ".");					} else if (target != null) {						con.getIRCIO().privmsg(recipient, "Someone I know.");					} else {						con.getIRCIO().privmsg(recipient, "Nobody important.");					}					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^who('| i)?s your daddy", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "Vino's my daddy, ugh! Spank me again Vino!");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("^knock knock", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "Who's there?");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (!censor(con) && iregex("i suck dick", msg)) {				if (System.currentTimeMillis() > nextWho) { //!spam					con.getIRCIO().privmsg(recipient, "Yeah, we know you do.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (!censor(con) && iregex("words of wisdom", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					String phrase = data.randomPhrase("wordsofwisdom.txt");					if (phrase != null)						con.getIRCIO().privmsg(recipient, phrase);					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("roll (the )?dice", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					Random rand = new Random();					int dice = rand.nextInt(5)+2;					int sides = rand.nextInt(5)+6;					con.getIRCIO().privemote(recipient, "rolls " + dice + "d" + sides + " dice and gets " + (dice*sides+1) + ".");					if (!data.isVino(host)) {						con.getIRCIO().privemote(recipient, "kills " + nick + ".");					} else {						con.getIRCIO().privemote(recipient, "hugs " + nick + ".");					}					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("do a little dance", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privemote(recipient, "makes a little love.");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("excuse", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					String excuse = data.randomPhrase("excuses.txt");					if (excuse != null)						con.getIRCIO().privmsg(recipient, "Your excuse is: " + excuse);					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;			} else if (iregex("bot[ -]*snack", msg)) {				if (System.currentTimeMillis() > nextWho) {	//!spam					con.getIRCIO().privmsg(recipient, "Yaaaaaay!");					nextWho = System.currentTimeMillis() + SPAM_WAIT;				}				return;							//BEGIN COMMAND SECTION.			//These are one-word commands only. The command is the first thing you say after the bot name. botname, command arguments.			} else if (tok.hasMoreElements()) {				String cmd = tok.nextToken(" ");				if (tok.hasMoreElements() && (cmd.startsWith(",") || cmd.startsWith(":"))) { 					cmd = tok.nextToken(" ");				}				if (iequals("kill", cmd)) {					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "KILL! KILL! KILL!");						return;					}					String killed = tok.nextToken(" ");					User killerUser = data.getUserByHost(host);					User killedUser = data.getUserByNick(connections, killed);					if ((killerUser == null || (killedUser != null && killedUser.memberType > killerUser.memberType)) && !data.isVino(host)) {						con.getIRCIO().privemote(recipient, "giggles at " + nick);					} else if (iequals(killed, botname)) {						con.getIRCIO().privmsg(recipient, ":(");					} else {						int killedAccess = con.getAccess(killed, channelNumber(con.getIndex(), recipient));						if (killedAccess != -1) {							con.getIRCIO().privmsg(recipient, "It would be my pleasure.");							con.getIRCIO().kick(recipient, killed, "This kick was compliments of " + killerUser.userName + ". Have a nice day.");						} else if (iequals("yourself", killed))	{ //reboot							if (data.isAdmin(host)) {								shutdown(true);								con.getIRCIO().privemote(recipient, "gags and passes out.");							} else {								con.getIRCIO().privmsg(recipient, "No.");							}						} else if (iregex("^(reminder|message)$", killed)) {							killed = killed.toLowerCase();							if (!tok.hasMoreElements()) {								con.getIRCIO().privmsg(recipient, "Which reminder? I need a number");								return;							}							try {								int msgIndex = Integer.parseInt(tok.nextToken()) - 1;								User user = data.getUserByHost(host);								Reminder reminders[] = data.getRemindersBySender(nick, user);								if (msgIndex >= reminders.length || msgIndex < 0) {									con.getIRCIO().privmsg(recipient, "You don't have that many " + killed + "s.");									return;								}								Reminder reminder = reminders[msgIndex];								String timeToArrive;								if (System.currentTimeMillis() > reminder.timeToArrive)									timeToArrive = makeTime(reminder.timeToArrive) + " ago";								else									timeToArrive = makeTime(reminder.timeToArrive) + " from now";								con.getIRCIO().privmsg(recipient, killed + " removed for " + reminder.target + " " + makeTime(reminder.timeSent) + " ago for " + timeToArrive + ": " + reminder.message);								data.removeReminder(reminder);							} catch (NumberFormatException nfe) {								con.getIRCIO().privmsg(recipient, "...if you can call that a number.");							}							return;						} else							con.getIRCIO().privmsg(recipient, "Kill who what now?"); 						return;					}					return;				} else if (iregex("^(remind|tell)$", cmd)) {					// Bit, remind [person] ([at time] || [on day]) OR ([in duration]) [to OR that OR about] [something]					// Bit, remind [person] [to OR that OR about] [something] ([at time] || [on day]) OR ([in duration])					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "Tell who what when?");						return;					}					String target = tok.nextToken(" ");					boolean myself = false;					String sender = nick;					target = data.removePunctuation(target, ".!,:");					if (iregex("(me|myself)", target)) {						myself = true;						target = nick;					}					//If the target is logged in, send the reminder to his username instead so he will always get it if he is logged in.					User targetUser = data.getUserByNick(connections, target);					//if that didn't work, try by name					if (targetUser == null)						targetUser = data.getUserByName(target);					//did we find a user?					if (targetUser != null)						target = targetUser.userName;					//If the sending user is logged in, send the reminders as his username instead so that all the reminders are sent by the same user.					User senderUser = data.getUserByHost(host);					if (senderUser != null)						sender = senderUser.userName;					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "Tell " + target + " when what?");						return;					}					try {						Reminder reminder = data.addReminder(target, tok.nextToken("").substring(1), sender);						con.getIRCIO().privmsg(recipient, "I'll tell " + 							(myself?"you":target) +" "+ reminder.getTimeExpression());					} catch (NumberFormatException nfe) {						con.getIRCIO().privmsg(recipient, nfe.getMessage());					}					return;				} else if (iregex("^(butt?)?se(x|ck[sz])$", cmd)) {					if (!tok.hasMoreElements()) {						con.getIRCIO().privemote(recipient, "anally rapes " + nick + ".");						return;					}					String sexed = tok.nextToken(" ");					if (iregex("^vino", sexed)) {						con.getIRCIO().privemote(recipient, "screams as Vino penetrates every orifice of her body!");					} else if (iequals(botname, sexed)) {						con.getIRCIO().privemote(recipient, "furiously works the potato masher!");					} else {						int sexedAccess = con.getAccess(sexed, channelNumber(con.getIndex(), recipient));						if (sexedAccess == -1) {							sexed = nick;						}						con.getIRCIO().privemote(recipient, "anally rapes " + sexed + ".");					}					return;				} else if (iregex("^re(boot|start)$", cmd)) {					if (data.isAdmin(host)) {						con.getIRCIO().privmsg(recipient, "Be right back.");						shutdown(true);					} else						con.getIRCIO().privmsg(recipient, "No.");					return;				} else if (iregex("^(shutdown|die|leave)$", cmd)) {					if (data.isAdmin(host)) {						con.getIRCIO().privmsg(recipient, "Goodbye. :(");						shutdown(false);					} else {						con.getIRCIO().privmsg(recipient, "No.");					}					return;				} else if (iequals("reload", cmd)) {					if (data.isAdmin(host)) {						data.parseConfig();						con.getIRCIO().privmsg(recipient, "Done.");					} else {						con.getIRCIO().privmsg(recipient, "No.");					}					return;				} else if (iequals("save", cmd)) {					if (data.isAdmin(host)) {						data.writeData();						con.getIRCIO().privmsg(recipient, "Done.");					} else {						con.getIRCIO().privmsg(recipient, "No.");					}					return;				} else if (iequals("listhosts", cmd)) {					User user = data.getUserByHost(host);					if (user == null)						return;					String buffer = "Hosts logged in as " + user.userName + ":";					for (int i = 0; i < 10; i++)						if (user.hosts[i] != null && user.hosts[i].length() > 0)							buffer += " " + (i+1) + ": " + user.hosts[i];					con.getIRCIO().privmsg(nick, buffer);					return;				} else if (iequals("logout", cmd)) {					User user = data.getUserByHost(host);					if (user == null)						return;					if (!tok.hasMoreElements()) {						for (int i = 0; i < 10; i++) {							if (user.hosts[i] != null && user.hosts[i].equals(host)) {								data.logout(user, i);								con.getIRCIO().privmsg(nick, "It's too bad things couldn't work out.");								return;							}						}						con.getIRCIO().privmsg(nick, "Your host is not logged in.");						return;					}					try {						int i = Integer.parseInt(tok.nextToken("").trim())-1;						if (i < 0 || i >= 10)							return;						if (user.hosts[i] == null || user.hosts[i].length() <= 0)							con.getIRCIO().privmsg(nick, "That host is not logged in.");						else {							con.getIRCIO().privmsg(nick, "It's too bad things couldn't work out.");							data.logout(user, i);							data.logout(user, i);							user.hosts[i] = null;						}					} catch (NumberFormatException nfe) {					}					return;				} else if (iequals("login", cmd)) {					if (tok.countTokens() < 2) {						con.getIRCIO().privmsg(nick, "Yeah. Sure. Whatever.");						return;					}					String login = tok.nextToken(" ").trim();					String passwd = tok.nextToken("").trim();					if (data.validateLogin(login, passwd)) {						int i, userID = -1;						User user = data.getUserByName(login);						if (user == null) {	//WTFException							con.getIRCIO().privmsg(nick, "WTF? Tell Vino you saw this.");							return;						}						// If getUserByHost returns non-null then the user is logged into this user already,						// or is logged in as another user and may not re-log in.						User ghost = data.getUserByHost(host);						if (ghost != null) {							con.getIRCIO().privmsg(nick, "Silly you. You're already logged in as " + ghost.userName);							return;						}						data.loginUser(user, host);						if (data.isVino(user))							con.getIRCIO().privmsg(nick, "Hi, daddy! :D");						else							con.getIRCIO().privmsg(nick, "What's up " + user.userName + "?");						data.writeData();					} else {						con.getIRCIO().privmsg(nick, "No cigar.");						log("Failed login attempt by " + nick + "!" + host + " with " + login + "/" + passwd + ".");					}					return;				} else if (iregex("^i('|\"| a)?m$", cmd)) {					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "You're what?");						return;					}					User user = data.getUserByHost(host);					if (user == null) {						con.getIRCIO().privmsg(recipient, "I don't care.");						return;					}					String location = tok.nextToken("").trim();					if (iregex("^ba+c?k", location)) {						if (user.away == null) {							con.getIRCIO().privmsg(recipient, "Of course you are honey.");						} else {							con.getIRCIO().privmsg(recipient, "Welcome back! You've been away for " + makeTime(user.leaveTime) + ".");							user.away = null;						}					} else {						con.getIRCIO().privmsg(recipient, "Have fun!");						//Remove punctuation from the end						location = data.removePunctuation(location, ".!,?");						user.away = location.replaceAll("\"", "'");						user.leaveTime = System.currentTimeMillis();					}					data.writeData();					return;				} else if (iregex("^(messages|reminders)$", cmd)) {					cmd = cmd.toLowerCase();					User user = data.getUserByHost(host);					int lastIndex, firstIndex = 0;					if (tok.hasMoreElements()) {						try {							firstIndex = Integer.parseInt(tok.nextToken())-1;							if (firstIndex < 1)								firstIndex = 1;						} catch (NumberFormatException nfe) {						}					}					Reminder reminders[] = data.getRemindersBySender(nick, user);					if (reminders.length == 0) {						con.getIRCIO().privmsg(recipient, "You haven't sent any messages.");						return;					}					if (firstIndex >= reminders.length) {						con.getIRCIO().privmsg(recipient, "You don't have that many messages.");						return;					}					lastIndex = firstIndex + 5;					if (lastIndex >= reminders.length)						lastIndex = reminders.length-1;					con.getIRCIO().privmsg(nick, "You have sent the following messages:");					for (int i = firstIndex; i <= lastIndex; i++) {						Reminder reminder = reminders[i];						String target = reminder.target;						if (iequals(reminder.target, nick))							target = "you";						String timeToArrive;						if (reminder.timeToArrive == 0) // No destination time; regular message							timeToArrive = "";						else if (System.currentTimeMillis() > reminder.timeToArrive)							timeToArrive = ", " + makeTime(reminder.timeToArrive) + " ago";						else							timeToArrive = ", " + makeTime(reminder.timeToArrive) + " from now";						con.getIRCIO().privmsg(nick, "Message " + (i+1) + ": For " + target + timeToArrive + ": " + reminder.message);					}					return;				} else if (iregex("^(say|do|emote)$", cmd)) {					if (!data.isAdmin(host)) {						con.getIRCIO().privmsg(recipient, "No.");						return;					}					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "Say what?!?");						return;					}					String firstWord = tok.nextToken();					String everythingElse = "";					String targetChannel = recipient;					if (iequals("in", firstWord) && tok.hasMoreTokens()) {						targetChannel = tok.nextToken();						if (tok.hasMoreElements()) {							firstWord = tok.nextToken();						} else {							con.getIRCIO().privmsg(targetChannel, "Say what?!?");							return;						}					}					if (tok.hasMoreTokens())						everythingElse = tok.nextToken("");										//Check recipient					IRCChannel channel = null;					IRCConnection sayCon = con;					channel = sayCon.getServer().findChannel(targetChannel); //first try the same server					if (channel == null)						for (int i = 0; i < connections.length; i++) { //search other servers							if (connections[i] != sayCon) { //the current one has already been searched								channel = connections[i].getServer().findChannel(targetChannel);								if (channel != null) {									sayCon = connections[i];									break;								}							}						}					if (channel == null) {						con.getIRCIO().privmsg(recipient, "I'm not in that channel.");						return;					}										if (iequals("say", cmd))						sayCon.getIRCIO().privmsg(channel.name, firstWord + everythingElse);					else						sayCon.getIRCIO().privemote(channel.name, firstWord + everythingElse);					return;				//TODO: Make mode setting colloquial				} else if (iequals("mode", cmd)) {					if (!data.isAdmin(host)) {						con.getIRCIO().privmsg(recipient, "No.");						return;					}					String inchannel = recipient;					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "What channel?");						return;					}					inchannel = tok.nextToken();					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "Who?");						return;					}					String who = tok.nextToken();					String mode;					if (!tok.hasMoreElements()) {						con.getIRCIO().privmsg(recipient, "What mode?");						return;					} else mode = tok.nextToken();					System.out.println("MODE " + inchannel + " " + mode + " " + who + "\n");					con.getIRCIO().setMode(who, inchannel, mode);					return;				} else if (iregex("^(last|seen)$", cmd)) {					if (!tok.hasMoreTokens()) {						con.getIRCIO().privmsg(recipient, "When did I last see who?");						return;					}					nick = tok.nextToken();					User target = data.getUserByNick(connections, nick);					if (target == null)						con.getIRCIO().privmsg(recipient, "I wasn't really paying attention to " + nick + ".");					else						con.getIRCIO().privmsg(recipient, "Last time I saw " + target.userName + " was " + makeTime(target.lastTalked) + " ago.");										return;				}			}				//Everything above here should return if it does something.				//Bot has been mentioned?			if (pm || talkingToMe(origmsg, data.getName(con.getIndex())) || iregex(name, msg)) {				if (!censor(con)) {					if (iregex("fuck you", msg)) {						if (System.currentTimeMillis() > nextWho) {	//!spam							con.getIRCIO().privmsg(recipient, "Fuck you too, buddy.");							nextWho = System.currentTimeMillis() + SPAM_WAIT;							return;						}					} else if (iregex("screw you", msg)) {						if (System.currentTimeMillis() > nextWho) {	//!spam							con.getIRCIO().privmsg(recipient, "Screw you too, buddy.");							nextWho = System.currentTimeMillis() + SPAM_WAIT;							return;						}					} else if (iregex("you suck", msg)) {						if (System.currentTimeMillis() > nextWho) {	//!spam							con.getIRCIO().privmsg(recipient, "I suck, but you swallow, bitch.");							nextWho = System.currentTimeMillis() + SPAM_WAIT;							return;						}					}				}				if (iregex("(thank( ?(yo)?u|[sz])\\b|\\bt(y|hn?x)\\b)", msg)) {					if (System.currentTimeMillis() > nextWho) { //!spam						con.getIRCIO().privmsg(recipient, "No problem.");						nextWho = System.currentTimeMillis() + SPAM_WAIT;						return;					}				} else if (iregex("bounc[ye]", msg)) {					if (System.currentTimeMillis() > nextWho) { //!spam						con.getIRCIO().privmsg(recipient, "Bouncy, bouncy, bouncy!");						nextWho = System.currentTimeMillis() + SPAM_WAIT;						return;					}				} else if (iregex("(right|correct)", msg)) {					if (System.currentTimeMillis() > nextWho) { //!spam						con.getIRCIO().privmsg(recipient, "Absolutely.");						nextWho = System.currentTimeMillis() + SPAM_WAIT;						return;					}				} else if (iregex("(custard|flavor( of? the? day)?|fotd)", msg)) {					int offset = 0;					if (iregex("tomorrow", msg)) {						offset++;					} else {						ParseTime pt = new ParseTime();						try {							pt.textToTime(msg);							// If time expression is found, our answer might be wrong.							con.getIRCIO().privmsg(recipient, "I don't know. Ask me " + pt.getTimeExpression() + ".");							return;						} catch (WTFException e) {							// Continue as normal if no time expression found						}					}					if (Custard.getMonth() == -1)						con.getIRCIO().privmsg(recipient, "Hold on, I'll check.");					con.getIRCIO().privmsg(recipient, Custard.flavorOfTheDay(offset));				}			}		//Wasn't talking to the bot		} else if (con.parrotOK()) {			con.setLastRepeat(con.getHistory(0));			con.getIRCIO().privmsg(recipient, con.getHistory(0));		}	}