import org.jibble.pircbot.*;
import com.google.soap.search.*;
import org.jibble.jmegahal.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
public class TMSModBot extends PircBot {
// Set up runtime variables.
private static final String googleKey = "it+is+none+of+your+buisiness";
boolean disabler = true;
boolean killer = false;
boolean trainingMode = true;
private JMegaHal hal;
private HashMap lastSeen = new HashMap( );
private Random random = new Random( );
String[] add = { "Empty quote.", "Empty quote.", "Empty quote.", "Empty quote.","Empty quote.","Empty quote.","Empty quote.","Empty quote.","Empty quote.","Empty quote.", };
@@ // Set up the management frame.
@@ JFrame myFrame = new JFrame();
@@ myFrame.setTitle("asdf");
// Set up bot main information.
public TMSModBot() {
this.setName("TMSModBot");
this.setLogin("yourmom");
hal = new JMegaHal( );
}
public void onConnect() {
this.sendRawLine("ns IDENTIFY thepasswordisnoneofyourbuisiness");
}
// If the bot disconnects, then report it to the user and exit.
public void onDisconnect() {
while (!isConnected()) {
if (killer == false) {
try {
System.out.println("Reconnection: Attempt 1");
reconnect();
} catch (Exception e1) {
try {
System.out.println("Reconnection: Attempt 2");
reconnect();
} catch (Exception e2) {
try {
System.out.println("Reconnection: Attempt 3");
reconnect();
} catch (Exception e3) {
System.out.println("Could not reconnect to server.");
System.exit(0);
}
}
}
} else {
System.out.println("Disconnected on request.");
System.exit(0);
}
}
}
public void onJoin(String channel, String sender, String login, String hostname) {
if (sender.equalsIgnoreCase("TMSModBot")) {
sendMessage(channel, "Sup. TMSModBot v4.0 here, type %help for a list of available commands.");
}
}
// If the bot is kicked, rejoin.
public void onKick(String channel, String sender, String login, String hostname, String message, String recipientNick) {
if (!channel.equals("#PureZC")) {
sendMessage(channel, "0WN3D");
}
}
public void onPrivateMessage(String sender, String login, String hostname, String message) {
if (message.startsWith("join ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String channelToJoin = message.substring(5).trim();
joinChannel(channelToJoin);
sendMessage(sender, "Attempted to join " + channelToJoin + ".");
}
if (message.startsWith("part ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String channelToPart = message.substring(5).trim();
this.sendRawLine("part " + channelToPart + " I was told to leave this channel. Bye!");
sendMessage(sender, "I have parted from channel " + channelToPart + ".");
}
if (message.startsWith("raw ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String command = message.substring(4).trim();
this.sendRawLine(command);
sendMessage(sender, "Raw command executed.");
}
// Help library.
if (message.equalsIgnoreCase("help")) {
sendMessage(sender, "Welcome to TMSModBot! Here is a list of my current commands. Commands that are bold are being developed.");
sendMessage(sender, "fortune, coin, 8ball, google, seen, roll, quote");
sendMessage(sender, "Note that all commands are prefixed with a % (percent sign). ALSO NOTE THAT COMMANDS CAN ONLY BE USED IN A CHANNEL!");
} else {
// Make the bot learn the message.
hal.add(message);
}
}
public void onAction(String sender, String login, String hostname, String target, String action) {
if (action.equalsIgnoreCase("hands TMSModBot a soda.") && disabler == true || action.equalsIgnoreCase("hands TMSModBot a soda") && disabler == true || action.equalsIgnoreCase("gives TMSModBot a soda.") && disabler == true || action.equalsIgnoreCase("hands TMSModBot a soda") && disabler == true || action.equalsIgnoreCase("hands a soda to TMSModBot") && disabler == true || action.equalsIgnoreCase("hands a soda to TMSModBot.") && disabler == true || action.equalsIgnoreCase("gives a soda to TMSModBot.") && disabler == true || action.equalsIgnoreCase("gives a soda to TMSModBot") && disabler == true) {
sendAction(target, "throws the soda at " + sender + "'s face, he doesn't drink soda!");
}
if (action.equalsIgnoreCase("pokes TMSModBot.") && disabler == true || action.equalsIgnoreCase("pokes TMSModBot")) {
sendAction(target, "screams: OW!!!");
}
}
public void onInvite(String targetNick, String sourceNick, String sourceLogin, String sourceHostname, String channel) {
if (targetNick.equals("TMSModBot")) {
this.sendRawLine("join " + channel);
}
}
// Command Library
public void onMessage(String channel, String sender, String login, String hostname, String message) {
if (message.equalsIgnoreCase("%help") && disabler == true) {
this.sendRawLine("NOTICE "+sender+" :Welcome to TMSModBot! Here is a list of my current commands. Commands that are bold are being developed.");
this.sendRawLine("NOTICE "+sender+" :fortune, coin, 8ball, google, seen, roll");
this.sendRawLine("NOTICE "+sender+" :Note that all commands are prefixed with a % (percent sign).");
this.sendRawLine("NOTICE "+sender+" :Quotation help: To add/delete/view a quotation, type %add[quotenumber]/%clear[quotenumber]/%quote[quotenumber], respectively.");
this.sendRawLine("NOTICE "+sender+" :Note that there is no spaces between those quotation commands and the quotenumber! Up to 10 quotes can be stored.");
}
if (message.startsWith("%raw ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String command = message.substring(5).trim();
this.sendRawLine(command);
sendMessage(channel, "Raw command executed.");
}
if (message.startsWith("%join ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String channelToJoin = message.substring(6).trim();
if (channelToJoin != "0") {
joinChannel(channelToJoin);
sendMessage(sender, "Attempted to join " + channelToJoin + ".");
}
}
if (message.startsWith("%part ") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
String channelToPart = message.substring(6).trim();
this.sendRawLine("part " + channelToPart + " I was told to leave this channel. Bye!");
sendMessage(sender, "I have parted from channel " + channelToPart + ".");
}
if (message.equalsIgnoreCase("%disable") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
disabler = false;
sendMessage(channel, "I have been disabled.");
}
if (message.equalsIgnoreCase("%enable") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
disabler = true;
sendMessage(channel, "I have been enabled.");
}
if (message.equalsIgnoreCase("%kill") && sender.equalsIgnoreCase("TheMasterSwordsman")) {
this.sendRawLine("quit I've been killed from this server! Oh Noes!!!");
killer = true;
}
// Quotations
if (message.startsWith("%add1 ")) {
String add1 = message.substring(6).trim();
add[0] = add1;
sendMessage(channel, "The quote \""+ add1 + "\" has successfully been added.");
} else if (message.startsWith("%add2 ")) {
String add2 = message.substring(6).trim();
add[1] = add2;
sendMessage(channel, "The quote \""+ add2 + "\" has successfully been added.");
} else if (message.startsWith("%add3 ")) {
String add3 = message.substring(6).trim();
add[2] = add3;
sendMessage(channel, "The quote \""+ add3 + "\" has successfully been added.");
} else if (message.startsWith("%add4 ")) {
String add4 = message.substring(6).trim();
add[3] = add4;
sendMessage(channel, "The quote \""+ add4 + "\" has successfully been added.");
} else if (message.startsWith("%add5 ")) {
String add5 = message.substring(6).trim();
add[4] = add5;
sendMessage(channel, "The quote \""+ add5 + "\" has successfully been added.");
} else if (message.startsWith("%add6 ")) {
String add6 = message.substring(6).trim();
add[5] = add6;
sendMessage(channel, "The quote \""+ add6 + "\" has successfully been added.");
} else if (message.startsWith("%add7 ")) {
String add7 = message.substring(6).trim();
add[6] = add7;
sendMessage(channel, "The quote \""+ add7 + "\" has successfully been added.");
} else if (message.startsWith("%add8 ")) {
String add8 = message.substring(6).trim();
add[7] = add8;
sendMessage(channel, "The quote \""+ add8 + "\" has successfully been added.");
} else if (message.startsWith("%add9 ")) {
String add9 = message.substring(6).trim();
add[8] = add9;
sendMessage(channel, "The quote \""+ add9 + "\" has successfully been added.");
} else if (message.startsWith("%add10 ")) {
String add10 = message.substring(6).trim();
add[9] = add10;
sendMessage(channel, "The quote \""+ add10 + "\" has successfully been added.");
}
if (message.equalsIgnoreCase("%clear1")) {
add[0] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear2")) {
add[1] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear3")) {
add[2] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear4")) {
add[3] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear5")) {
add[4] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear6")) {
add[5] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear7")) {
add[6] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear8")) {
add[7] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear9")) {
add[8] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clear10")) {
add[9] = "Empty quote.";
sendMessage(channel, "Quote has been erased.");
} else if (message.equalsIgnoreCase("%clearall") && sender.equals("TheMasterSwordsman")) {
add[0] = "Empty quote.";
add[1] = "Empty quote.";
add[2] = "Empty quote.";
add[3] = "Empty quote.";
add[4] = "Empty quote.";
add[5] = "Empty quote.";
add[6] = "Empty quote.";
add[7] = "Empty quote.";
add[8] = "Empty quote.";
add[9] = "Empty quote.";
}
if (message.equalsIgnoreCase("%quote1")) {
sendMessage(channel, add[0]);
} else if (message.equalsIgnoreCase("%quote2")) {
sendMessage(channel, add[1]);
} else if (message.equalsIgnoreCase("%quote3")) {
sendMessage(channel, add[2]);
} else if (message.equalsIgnoreCase("%quote4")) {
sendMessage(channel, add[3]);
} else if (message.equalsIgnoreCase("%quote5")) {
sendMessage(channel, add[4]);
} else if (message.equalsIgnoreCase("%quote6")) {
sendMessage(channel, add[5]);
} else if (message.equalsIgnoreCase("%quote7")) {
sendMessage(channel, add[6]);
} else if (message.equalsIgnoreCase("%quote8")) {
sendMessage(channel, add[7]);
} else if (message.equalsIgnoreCase("%quote9")) {
sendMessage(channel, add[8]);
} else if (message.equalsIgnoreCase("%quote10")) {
sendMessage(channel, add[9]);
}
// Dice
if (message.equals("%dice")) {
sendMessage(channel, "The die comes to a stop on " + (random.nextInt(6) + 1) + ".");
} else if (message.equals("%dice double")) {
sendMessage(channel, "The dice comes to a stop on " + (random.nextInt(12) + 1) + ".");
} else if (message.equals("%dice triple")) {
sendMessage(channel, "The dice comes to a stop on " + (random.nextInt(18) + 1) + ".");
}
// Magic 8 Ball
if (message.startsWith("%8ball ") && disabler == true || message.startsWith("%8Ball ") && disabler == true) {
Random eightBallRandom = new Random();
int responseNumber = eightBallRandom.nextInt(10) + 1;
if (responseNumber == 1) {
sendMessage(channel, "The 8-Ball Replys: Yes.");
} else if (responseNumber == 2) {
sendMessage(channel, "The 8-Ball Replys: No.");
} else if (responseNumber == 3) {
sendMessage(channel, "The 8-Ball Replys: Reply hazy, try asking again.");
} else if (responseNumber == 4) {
sendMessage(channel, "The 8-Ball Replys: Concentrate and ask again.");
} else if (responseNumber == 5) {
sendMessage(channel, "The 8-Ball Replys: My sources say yes.");
} else if (responseNumber == 6) {
sendMessage(channel, "The 8-Ball Replys: My sources say no.");
} else if (responseNumber == 7) {
sendMessage(channel, "The 8-Ball Replys: Don't count on it.");
} else if (responseNumber == 8) {
sendMessage(channel, "The 8-Ball Replys: You may rely on it.");
} else if (responseNumber == 9) {
sendMessage(channel, "The 8-Ball Replys: As I see it, yes.");
} else {
sendMessage(channel, "The 8-Ball Replys: As I see it, no.");
}
} else if (message.startsWith("%8ball") && disabler == false || message.startsWith("%8Ball ") && disabler == false) {
}
if (message.equals("%chanlist")) {
sendMessage(channel, "TMSModBot is currently connected to the following channels: ");
for (String s : getChannels()) {
sendMessage(channel, s);
}
}
// Coin flipper
if (message.equalsIgnoreCase("%coin") && disabler == true) {
Random coinRandom = new Random();
int coin = coinRandom.nextInt(1000) + 1;
if (coin < 500) {
sendMessage(channel, "The coin landed on heads.");
} else if (coin > 500) {
sendMessage(channel, "The coin landed on tails.");
} else if (coin == 500) {
sendMessage(channel, "The coin landed on the side! Oh noes!");
}
} else if (message.equalsIgnoreCase("%coin") && disabler == false) {
}
// Fortune teller
if (message.startsWith("%fortune") && disabler == true) {
Random fortuneRandom = new Random();
int fortune = fortuneRandom.nextInt(20) + 1;
if (fortune == 1) {
sendMessage(channel, "Fortune for " + sender + ": You're feeling good? Oh really? GET THE HELMETS!");
} else if (fortune == 2) {
sendMessage(channel, "Fortune for " + sender + ": You better be glad I'm a bot, because if I wasn't I'd come find you. I WOULD.");
} else if (fortune == 3) {
sendMessage(channel, "Fortune for " + sender + ": Why ask me? Call 1-800-FORTUNE for a better reading. OH WAIT, YOU HAVE DIALUP! HA HA HA!");
} else if (fortune == 4) {
sendMessage(channel, "Fortune for " + sender + ": It's going to be a good day. Go sleep with a washrag.");
} else if (fortune == 5) {
sendMessage(channel, "Fortune for " + sender + ": Today shall be your last. (FINALLY...)");
} else if (fortune == 6) {
sendMessage(channel, "Fortune for " + sender + ": I'd say that you're really more of a... supernerd.");
} else if (fortune == 7) {
sendMessage(channel, "Fortune for " + sender + ": True love is among us. The next person to send a message to this channel (other than me) will be your love.");
} else if (fortune == 8) {
sendMessage(channel, "Fortune for " + sender + ": You must be really bored for asking a BOT to tell your future or something like that...");
} else if (fortune == 9) {
sendMessage(channel, "Fortune for " + sender + ": IRC is the best place for fortune. It has some really good people in it. So why are you in here?");
} else if (fortune == 10) {
sendMessage(channel, "Fortune for " + sender + ": The next time you use this command... I am going to reach my hand through your modem and punch you in the face.");
} else if (fortune == 11) {
sendMessage(channel, "Fortune for " + sender + ": You know, I have censors. I wonder why I never kicked you in the first place...");
} else if (fortune == 12) {
sendMessage(channel, "Fortune for " + sender + ": When I don't know what to say, this is the message that appears. Deal with it.");
} else if (fortune == 13) {
sendMessage(channel, "Fortune for " + sender + ": If you are a chatroom addict, all I can say is GTFO.");
} else if (fortune == 14) {
sendMessage(channel, "Fortune for " + sender + ": You know, I never did like you. That's why I'm not going to give a fortune to you.");
} else if (fortune == 15) {
sendMessage(channel, "Fortune for " + sender + ": Get a sword and stab yourself. It's the only thing appropriate to tell you.");
} else if (fortune == 16) {
sendMessage(channel, "Fortune for " + sender + ": The Triforce is with you. But not right now. (Thank God)");
} else if (fortune == 17) {
sendMessage(channel, "Fortune for " + sender + ": This was a randomly generated reply using random numbers. Why are you wasting my time?");
} else if (fortune == 18) {
sendMessage(channel, "Fortune for " + sender + ": Go eat a cheeseburger. And while you're there, pick me up a number 2 extra large with a Biggie-sized Dr. Pepper.");
} else if (fortune == 19) {
sendMessage(channel, "Fortune for " + sender + ": You've been shot. I'm putting down the gun. (YES!)");
} else {
sendMessage(channel, "Fortune for " + sender + ": If you're seeing this message, you'll be living until you actually try something new. (Like that'll ever happen. Sigh...)");
}
} else if (message.equalsIgnoreCase("%fortune") && disabler == false) {
}
// Google search
if (message.startsWith("%google ") && disabler == true) {
String searchTerms = message.substring(8);
String result = null;
try {
GoogleSearch search = new GoogleSearch( );
search.setKey(googleKey);
search.setQueryString(searchTerms);
search.setMaxResults(1);
GoogleSearchResult searchResult = search.doSearch( );
GoogleSearchResultElement[] elements =
searchResult.getResultElements( );
if (elements.length == 1) {
GoogleSearchResultElement element = elements[0];
// Remove all HTML tags from the title.
String title = element.getTitle( ).replaceAll("<.*?>", "");
result = element.getURL( ) + " (" + title + ")";
if (!element.getCachedSize( ).equalsIgnoreCase("0")) {
result = result + " - " + element.getCachedSize( );
}
}
}
catch (GoogleSearchFault e) {
// Something went wrong. Say why.
result = "Unable to perform your search: " + e;
}
if (result == null) {
// No results were found for the search terms.
result = "Nothing to be found... Try changing your search terms to something a little less specific.";
}
// Send the result to the channel.
sendMessage(channel, sender + ": " + result);
} else if (message.startsWith("%google ") && disabler == false) {
}
if (message.toLowerCase( ).indexOf("fuck".toLowerCase()) >= 0 || message.toLowerCase( ).indexOf("shit".toLowerCase()) >= 0 || message.toLowerCase( ).indexOf("whore".toLowerCase()) >= 0 || message.toLowerCase( ).indexOf("rape".toLowerCase()) >= 0) {
sendMessage(channel, sender + " used bad language on " + new Date() + ".");
}
if (message.toLowerCase( ).indexOf(getNick( ).toLowerCase( )) >= 0 && disabler == true) {
// If the bot's nickname was mentioned, generate a random reply for this channel.
String sentence = hal.getSentence( );
sendMessage(channel, sentence);
}
if (message.startsWith("%seen ") && disabler == true) {
String nick = message.substring(6).trim( );
String seen = (String) lastSeen.get(nick.toLowerCase( ));
if (seen != null) {
// Tell the channel when this nickname was last seen.
sendMessage(channel, nick + " was last seen on " + seen);
} else {
// Someone wasn't here, so let's tell them.
sendMessage(channel, "I haven't seen " + nick + " on this server.");
}
} else if (message.startsWith("%seen") && disabler == false) {
}
if (message.startsWith("%training ") && sender.equals("TheMasterSwordsman")) {
String setTraining = message.substring(10).trim();
if (setTraining.equals("enable") || setTraining.equals("e")) {
trainingMode = true;
sendMessage(channel, "Artificial Intelligence Training has been enabled.");
} else if (setTraining.equals("disable") || setTraining.equals("d")) {
trainingMode = false;
sendMessage(channel, "Artificial Intelligence Training has been disabled.");
} else {
sendMessage(channel, "The value must be enable or disable. (alternatives are e and d)");
}
}
else if (message != "" && trainingMode == true) {
// Make the bot learn the message.
hal.add(message);
}
}
}