import org.apello.abot.*; import java.io.*; import java.net.*; public class di3 extends PluginAdapter{ public di3(ABot ab){super(ab);} public String getPluginName(){return "di3";} public String getPluginDesc(){return ".";} public void init(String args)throws Exception{ if(args.equals("") == true) throw new Exception("Cookie value for \"rscdforums\" was not set (needed to check players online)"); else cookieValue = args; File f1 = new File(System.getProperty("user.dir") + "/admins.di3"); if(f1.exists() == false) throw new Exception(System.getProperty("user.dir") + "/admins.di3 doesn't exist"); File f2 = new File(System.getProperty("user.dir") + "/ignores.di3"); if(f2.exists() == false) throw new Exception(System.getProperty("user.dir") + "/ignores.di3 doesn't exist"); } public void process(){} public void dispose(){} public void run(){} public long iStart = System.currentTimeMillis();//ignore public long start = System.currentTimeMillis();//normal public long spamDelaySec = 10; public boolean getStats = true; public boolean oracle = false; public boolean notice = false; public boolean google = false; public String cookieValue = ""; public String channelAllowed = "#rscdaemon"; public void processCommand(String replyMethod, String nick, String ident, String host, String msg){ } public void onChatMessage(String channel, String senderNick, String senderIdent, String senderHost, String msg) { if(channel.equalsIgnoreCase(channelAllowed) == false) return; String host = senderIdent + "@" + senderHost; //System.out.println(host); if(msg.startsWith(getNick() + ", ") || msg.startsWith(getNick() + ": ") || msg.startsWith(getNick() + " ")) { if(msg.startsWith(getNick() + " ")) msg = msg.replaceAll(getNick() + " ", ""); else msg = msg.replaceAll(getNick(), "").substring(2); if(isIgnored(host)) { if(getTimeElapsed(iStart, 0) < (20 * 1000))//20sec return; iStart = System.currentTimeMillis(); sendNotice(senderNick, "You are ignored at the moment"); return; } if(isAdmin(senderNick, host) == false) { if(getTimeElapsed(start, 0) < (spamDelaySec * 1000)) { sendNotice(senderNick, "Command not processed due to spam throttling"); return; } start = System.currentTimeMillis(); if(oracle == false) { sendNotice(senderNick, "Oracle is disabled at the moment"); return; } } doMessage(senderNick, channel, askOracle(msg)); } if(msg.startsWith("!") == true) { msg = msg.substring(1); if(isIgnored(host)) { if(getTimeElapsed(iStart, 0) < (spamDelaySec * 1000)) { return; } iStart = System.currentTimeMillis(); sendNotice(senderNick, "You are ignored at the moment"); return; } if(isAdmin(senderNick, host) == false) { if(getTimeElapsed(start, 0) < (spamDelaySec * 1000)) { sendNotice(senderNick, "Command not processed due to spam throttling"); return; } start = System.currentTimeMillis(); } String nick = senderNick; String from = channel; if(getStats == true || isAdmin(senderNick, host)) { if(msg.startsWith("owner ")) { doMessage(nick, from, owner(msg.substring(6), true)); } else if(msg.startsWith("status ")) { doMessage(nick, from, owner(msg.substring(7), false)); } else if(msg.startsWith("combat ")) { doMessage(nick, from, charInfo(msg.substring(7), "combat")); } else if(msg.startsWith("ranged ")) { doMessage(nick, from, charInfo(msg.substring(7), "ranged")); } else if(msg.startsWith("prayer ")) { doMessage(nick, from, charInfo(msg.substring(7), "prayer")); } else if(msg.startsWith("magic ")) { doMessage(nick, from, charInfo(msg.substring(6), "magic")); } else if(msg.startsWith("cooking ")) { doMessage(nick, from, charInfo(msg.substring(8), "cooking")); } else if(msg.startsWith("woodcut ")) { doMessage(nick, from, charInfo(msg.substring(8), "woodcut")); } else if(msg.startsWith("fletching ")) { doMessage(nick, from, charInfo(msg.substring(10), "fletching")); } else if(msg.startsWith("fishing ")) { doMessage(nick, from, charInfo(msg.substring(8), "fishing")); } else if(msg.startsWith("firemaking ")) { doMessage(nick, from, charInfo(msg.substring(11), "firemaking")); } else if(msg.startsWith("crafting ")) { doMessage(nick, from, charInfo(msg.substring(9), "crafting")); } else if(msg.startsWith("smithing ")) { doMessage(nick, from, charInfo(msg.substring(9), "smithing")); } else if(msg.startsWith("mining ")) { doMessage(nick, from, charInfo(msg.substring(7), "mining")); } else if(msg.startsWith("herblaw ")) { doMessage(nick, from, charInfo(msg.substring(8), "herblaw")); } else if(msg.startsWith("agility ")) { doMessage(nick, from, charInfo(msg.substring(8), "agility")); } else if(msg.startsWith("thieving ")) { doMessage(nick, from, charInfo(msg.substring(9), "thieving")); } else if(msg.startsWith("kpd ")) { doMessage(nick, from, charInfo(msg.substring(4), "kpd")); } else if(msg.startsWith("stats ")) { String[] array = charInfo(msg.substring(6), "stats").split("\n"); for(int x = 0; x < array.length; x++) { if(contains(array[x], "null") == true) { doMessage(nick, from, nick + ": No such player"); break; } doMessage(nick, nick, array[x]); } } else if(msg.equalsIgnoreCase("online")) { int onlinei = online(); String online = ""; if(onlinei == -3) online = "Connection timed out, rscdaemon.org down?"; else if(onlinei == -1) online = "Unknown error"; else online = String.valueOf(onlinei); doMessage(nick, from, "There are " + online + " players online"); } else if(msg.startsWith("top5 ")) { String tmp = msg.substring(5); if(tmp.equals("")) doMessage(nick, from, nick + ": Wrong syntax"); else doMessage(nick, from, getTop5(tmp)); } else if(msg.equalsIgnoreCase("top5")) { doMessage(nick, from, getTop5()); } } if(google == true || isAdmin(senderNick, host)) { if(msg.startsWith("google ")) { String query = msg.substring(7); String result = google(query); doMessage(nick, from, result); } } } } public void onPrivateMessage(String senderNick, String senderIdent, String senderHost, String msg) { if(isAdmin(senderNick, senderIdent + "@" + senderHost)) adminCommand(senderNick, msg); } public void adminCommand(String nick, String msg) { if(msg.startsWith("msg ")) { msg = msg.substring(4); String[] array = msg.split(" "); String whoto = array[0]; msg = msg.replaceAll(whoto + " ", ""); sendMessage(whoto, msg); } else if(msg.equalsIgnoreCase("notice")) { notice = notice ? false : true; sendMessage(nick, "Noticing: " + toStr(notice)); } else if(msg.equalsIgnoreCase("stats")) { getStats = getStats ? false : true; sendMessage(nick, "Stats: " + toStr(getStats)); } else if(msg.equalsIgnoreCase("oracle")) { oracle = oracle ? false : true; sendMessage(nick, "Oracle: " + toStr(oracle)); } else if(msg.equalsIgnoreCase("google")) { google = google ? false : true; sendMessage(nick, "Google: " + toStr(google)); } else if(msg.startsWith("spam ")) { long delay = Long.parseLong(msg.substring(5)); spamDelaySec = delay; sendMessage(nick, "Spam delay: " + toStr(spamDelaySec) + " seconds"); } else if(msg.equalsIgnoreCase("status")) { sendMessage(nick, "Noticing: " + toStr(notice)); sendMessage(nick, "Oracle: " + toStr(oracle)); sendMessage(nick, "Google: " + toStr(google)); sendMessage(nick, "Stats: " + toStr(getStats)); sendMessage(nick, "Spam delay: " + toStr(spamDelaySec)); } else if(msg.startsWith("ignore ")) { msg = msg.substring(7); if(msg.startsWith("add ")) { msg = msg.substring(4); addIgnore(msg); sendMessage(nick, msg + " added to ignore"); } else if(msg.startsWith("del ")) { msg = msg.substring(4); removeIgnore(msg); sendMessage(nick, msg + " removed from ignore"); } } else if(msg.startsWith("is ")) { msg = msg.substring(3); if(msg.startsWith("ignored ")) { msg = msg.substring(8); if(isIgnored(msg) == true) sendMessage(nick, msg + " is ignored"); else sendMessage(nick, msg + " is not ignored"); } } } /**/ public void doMessage(String nick, String channel, String msg) { if(notice == true) sendNotice(nick, msg); else sendMessage(channel, msg); } public boolean contains(String str, String toContain) { if(str.indexOf(toContain) >= 0) return true; return false; } public void updateLong(long l) { l = System.currentTimeMillis(); } public boolean toBoolean(String s) { return s.equalsIgnoreCase("true") == false ? false : true; } public String toStr(long l) { try { String x = String.valueOf(l); return x; } catch(Exception e) { return null; } } public String toStr(boolean b) { return b ? "on" : "off"; } public String toStr(int number) { try { String x = String.valueOf(number); return x; } catch(Exception e) { return null; } } public int toInt(String value) { try { int x = Integer.parseInt(value); return x; } catch(Exception e) { return -1; } } public boolean isInt(String value) { try { Integer.parseInt(value); return true; } catch(Exception e) { return false; } } public int random(int one, int two) { return new java.util.Random().nextInt(two - one + 1) + one; } public String underline() { return ""; } public String u() { return underline(); } public String bold() { return ""; } public String b() { return bold(); } public String getTop5(String skill) { try { URLConnection connection; connection = new URL("http://www.rscdaemon.org/highscores.php?skill=" + skill).openConnection(); connection.setRequestProperty("Cookie", "rscdforums=" + cookieValue); BufferedReader input = new BufferedReader(new InputStreamReader(connection.getInputStream())); String str; String return_ = "Top 5 players for " + skill + " (by level): "; int getcounter = 1; int getcounter2 = 1; int arraycounter = 0; int arraycounter2 = 0; String[] names = new String[5]; int[] levels = new int[5]; boolean gotlevel = false; while ((str = input.readLine()) != null) { if(str.contains("