import org.jibble.pircbot.*; import com.google.soap.search.*; import org.jibble.jmegahal.*; import java.util.*; import java.io.*; public class PyroBot extends PircBot { // A map of String (nickname) to ArrayList (message Strings). private HashMap messages = new HashMap( ); ... String prefix = "?"; public PyroBot() { this.setLogin("fire"); this.setName("PyroBot"); } JMegaHal hal = new JMegaHal(); public void onMessage(String channel, String sender, String login, String hostname, String message) { String[] tokens = message.split("\\s+"); // Tell if (tokens.length > 2 && tokens[0].equalsIgnoreCase(prefix+"tell")) { String nick = tokens[1]; message = message.substring(message.indexOf(nick) + nick.length( ) + 1); // Convert the nickname to lowercase for use in the HashMap. String key = nick.toLowerCase( ); ArrayList list = (ArrayList) messages.get(key); if (list == null) { // Create a new ArrayList if the HashMap entry is empty. list = new ArrayList( ); messages.put(key, list); } // Add the message to the list for the target nickname. list.add(sender + " asked me to tell you " + message); sendMessage(channel, "Okay, " + sender); } ... public void onJoin(String channel, String sender, String login, String hostname) { // Convert the nickname to lowercase to get the HashMap key. String key = sender.toLowerCase( ); ArrayList list = (ArrayList) messages.get(key); if (list != null) { // Send all messages to the user. for (int i = 0; i < list.size( ); i++) { String message = (String) list.get(i); sendMessage(channel, sender + ", " + message); } // Now erase all messages for this user. messages.put(key, null); } }; } }