rendered paste bodypackage sweetie;import java.util.ArrayList;import java.util.HashMap;import java.util.Scanner;import jerklib.Channel;import jerklib.ConnectionManager;import jerklib.Profile;import jerklib.Session;import jerklib.events.IRCEvent;import jerklib.events.IRCEvent.Type;import jerklib.events.MessageEvent;import jerklib.listeners.IRCEventListener;public class Sweetie implements IRCEventListener { private final Character KEYCHAR = '@'; private final String NICKNAME = "sweetinha"; private static final String SERVER = "irc.freenode.net"; private HashMap<String, ProcessText> cmdIndex = new HashMap<String, ProcessText>(); private ArrayList<HandleText> handleTextIndex = new ArrayList<HandleText>(); private static ConnectionManager manager; static Session session; public void start() { cmdIndex.put("ping", new Ping()); cmdIndex.put("tr", new Translation()); cmdIndex.put("g", new Google()); cmdIndex.put("wa", new WolframAlpha()); cmdIndex.put("w", new WKT()); handleTextIndex.add(new FindPalindromes()); manager = new ConnectionManager(new Profile(NICKNAME)); session = manager.requestConnection(SERVER); session.addIRCEventListener(this); } public static void main(String[] args) { Sweetie sweetie = new Sweetie(); sweetie.start(); processStdinLoop(sweetie); System.exit(0); } private static void processStdinLoop(Sweetie sweetie) { Scanner scan = new Scanner(System.in); while (true) { System.out.print("> "); String line = scan.nextLine(); String[] s = line.split(" ", 2); if (s.length == 0) { continue; } if (s[0].equalsIgnoreCase("jc")) { session.join("#clube_dos_perdedores"); } else if (s[0].equalsIgnoreCase("je")) { session.join("#english"); } else if (s[0].equalsIgnoreCase("join")) { if (s.length < 2) { System.out.println("missing parameter"); continue; } session.join(s[1]); } else if (s[0].equalsIgnoreCase("quit")) { if (s.length > 1) { session.close(s[1]); } else { session.close("Sweetie IRC Bot"); } session.removeIRCEventListener(sweetie); System.out.println(""); return; } else if (s[0].equalsIgnoreCase("say")) { s = line.split(" ", 3); if (s.length < 3) { System.out.println("missing parameter"); continue; } if (s[1].charAt(0) == '#') { session.sayChannel(new Channel(s[1], session), s[2]); } else { session.sayPrivate(s[1], s[2]); } } } } public void handleMessage(MessageEvent me) { ArrayList<String> reply = null; for (int i = 0; i < handleTextIndex.size(); i++) { ArrayList<String> replies = ((HandleText) handleTextIndex.get(i)).process(me.getMessage()); if (replies == null) { continue; } for (int j = 0; j < replies.size(); j++) { me.getChannel().say(replies.get(j)); } } if (me.getMessage().charAt(0) != KEYCHAR || me.getMessage().length() < 2) { return; } String cmd = null; String params = null; if (me.getMessage().indexOf(" ") > 0) { cmd = me.getMessage().substring(1, me.getMessage().indexOf(" ")); if (me.getMessage().length() > cmd.length() + 2) { params = me.getMessage().substring(me.getMessage().indexOf(" ") + 1); } } else { cmd = me.getMessage().substring(1); } if (cmdIndex.containsKey(cmd)) { reply = ((ProcessText) cmdIndex.get(cmd)).process(params); if (reply != null) { for (String s : reply) { s = me.getNick() + ": " + s; me.getChannel().say(s); } } } } public void receiveEvent(IRCEvent e) { if (e.getType() == Type.CHANNEL_MESSAGE) { handleMessage((MessageEvent) e); } else if (e.getType() == Type.CONNECTION_LOST) { Sweetie s = new Sweetie(); s.start(); } }}