All pastes #2065057 Raw Edit

Miscellany

public java v1 · immutable
#2065057 ·published 2011-05-19 22:08 UTC
rendered paste body
package 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();        }    }}