Advertisement
Guest User

Untitled

a guest
May 20th, 2018
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.61 KB | None | 0 0
  1. import java.text.SimpleDateFormat;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.Random;
  6.  
  7. import javax.swing.JFrame;
  8.  
  9. import jerklib.*;
  10. import jerklib.events.*;
  11. import jerklib.events.IRCEvent.*;
  12. import jerklib.listeners.*;
  13.  
  14. public class Main implements IRCEventListener {
  15.    
  16.     private static final String COMMAND_CHAR = "-"; // MUST BE 1 CHARACTER LONG
  17.     private static final String PASSWORD = "*****";
  18.     private static final String[] BAD_WORDS = {"fuck","fucking","cunt","pussy","nigger",
  19.         "nigga","bitch","slut","vagina","penis","shit","cock","dick"};
  20.    
  21.     private ConnectionManager con;
  22.     private ArrayList<String> allowed_users; // store masters usernames
  23.     private ArrayList<String> afk_users;     // store afk usernames
  24.     private HashMap<String, Object> warnings; // store warnings
  25.    
  26.     public Main() {
  27.         con = new ConnectionManager(new Profile("TinkerBot"));
  28.         con.requestConnection("irc.geekshed.net").addIRCEventListener(this);
  29.         allowed_users = Util.getMasters();
  30.         afk_users = new ArrayList<String>();
  31.         warnings = new HashMap<String, Object>();
  32.     }
  33.  
  34.     public void receiveEvent(IRCEvent e) {
  35.         System.out.println(e.getRawEventData());
  36.         // When sucessfully connected to irc
  37.         if (e.getType() == Type.CONNECT_COMPLETE) {
  38.             e.getSession().join("#tinkernut");
  39.         // Join tinkernut channel
  40.         } else if (e.getType() == Type.JOIN_COMPLETE) {
  41.             // Identify
  42.             JoinCompleteEvent jce = (JoinCompleteEvent) e;
  43.             jce.getSession().sayPrivate("nickserv", "identify " + PASSWORD);
  44.         } else if (e.getType() == Type.JOIN) {
  45.             JoinEvent je = (JoinEvent) e;
  46.             je.getChannel().say("Welcome, " + je.getNick());
  47.         // Handle commands
  48.         } else if (e.getType() == Type.CHANNEL_MESSAGE) {
  49.             MessageEvent me = (MessageEvent) e;
  50.             Channel ch = me.getChannel();
  51.             String msg = me.getMessage();
  52.            
  53.             // high lvl commands
  54.             // high lvl commands require to be added by the bot master(s)
  55.             // or to be ... a bot master
  56.             if (isUserAllowed(me.getNick())) {
  57.                 // say command
  58.                 if (msg.startsWith(COMMAND_CHAR + "say ")) {
  59.                     ch.say(msg.substring(5));
  60.                 // quit command
  61.                 } else if (msg.equals(COMMAND_CHAR + "quit")) {
  62.                     con.quit();
  63.                     System.exit(0);
  64.                 // add command
  65.                 } else if (msg.startsWith(COMMAND_CHAR + "add ")) {
  66.                     if (!isUserAllowed(msg.substring(5))) {
  67.                         for (String user : ch.getNicks()) {
  68.                             if (user.toLowerCase() == msg.substring(5))
  69.                             allowed_users.add(user);
  70.                         }
  71.                         ch.say("User " + msg.substring(5) + " was added!");
  72.                     } else {
  73.                         ch.say(msg.substring(5) + " already controls the bot!");
  74.                     }
  75.                 // rem command
  76.                 } else if (msg.startsWith(COMMAND_CHAR + "rem ")) {
  77.                     allowed_users.remove(msg.substring(5));
  78.                     ch.say("User " + msg.substring(5) + " was removed!");
  79.                 // list command
  80.                 } else if (msg.equals(COMMAND_CHAR + "list")) {
  81.                     ch.say("There are " + ch.getNicks().size() + " users online!");
  82.                 // controls command
  83.                 } else if (msg.equals(COMMAND_CHAR + "controls")) {
  84.                     StringBuilder strb = new StringBuilder();
  85.                     for (String user : allowed_users) {
  86.                         strb.append(user);
  87.                         strb.append(" ");
  88.                     }
  89.                     ch.say(strb.toString());
  90.                 // kick command
  91.                 } else if (msg.startsWith(COMMAND_CHAR + "kick ")) {
  92.                     ch.kick(msg.substring(6), "");
  93.                 // time command
  94.                 } else if (msg.equals(COMMAND_CHAR + "time")) {
  95.                     SimpleDateFormat formatter = new SimpleDateFormat("K:mm:ss a, z");
  96.                     ch.say(formatter.format(new Date()));
  97.                 // help command
  98.                 } else if (msg.equals(COMMAND_CHAR + "help")) {
  99.                     ch.say("Command character is: " + COMMAND_CHAR + " , Commands: ?character, say <string>, add <user>, rem <user>, kick <user>, list, controls, time, roll, afk, back, quit, help");
  100.                 // ?character command
  101.                 } else if (msg.equals("?character")) {
  102.                     ch.say(COMMAND_CHAR);
  103.                 } else if (msg.startsWith(COMMAND_CHAR + "jail ")) {
  104.                     String subst = msg.substring(6);
  105.                     int mins = Integer.parseInt(subst.substring(0, subst.indexOf(" ")));
  106.                     String user = subst.substring(subst.indexOf(" "));
  107.                     ch.say("TEST: Jail " + user + " for " + mins + " minutes!");
  108.                 }
  109.             }
  110.             // low lvl commands
  111.             // low lvl commands can be used by any user, it doesn't require permissions
  112.            
  113.             // roll command
  114.             if (msg.equals(COMMAND_CHAR + "roll")) {
  115.                 ch.say("" + (new Random().nextInt(100) + 1));
  116.             // afk command
  117.             }  else if (msg.equals(COMMAND_CHAR + "afk")) {
  118.                 if (!isUserAfk(me.getNick())) {
  119.                     afk_users.add(me.getNick());
  120.                     ch.say(me.getNick() + " is now afk.");
  121.                 }
  122.             // back command
  123.             } else if (msg.equals(COMMAND_CHAR + "back")) {
  124.                 if (isUserAfk(me.getNick())) {
  125.                     afk_users.remove(me.getNick());
  126.                     ch.say(me.getNick() + " is now back.");
  127.                 }
  128.             }
  129.            
  130.             // analyze messages
  131.            
  132.             // check for afk people
  133.             for (String user : afk_users) {
  134.                 if (msg.toLowerCase().contains(user.toLowerCase())) {
  135.                     ch.say("The user " + user + " is currently afk.");
  136.                 }
  137.             }
  138.            
  139.             // check for all caps messages
  140.             if (Util.calculateAllCapsRatio(msg) >= 80 && (Util.calculateWordNumber(msg) >= 3 || msg.length() >= 8)) {
  141.                 if (warnings.get(me.getNick()) == null) {
  142.                     warnings.put(me.getNick(), new Object());
  143.                     ch.say(me.getNick() + ", please do not use all caps!");
  144.                 } else {
  145.                     ch.kick(me.getNick(), "Did not follow the rules!");
  146.                     warnings.remove(me.getNick());
  147.                 }
  148.                 return;
  149.             }
  150.            
  151.             // check for bad words
  152.             for (String word : Util.splitIntoWord(msg)) {
  153.                 word = word.toLowerCase();
  154.                 for (String bad_word : BAD_WORDS) {
  155.                     if (bad_word.equals(word)) {
  156.                         if (warnings.get(me.getNick()) == null) {
  157.                             warnings.put(me.getNick(), new Object());
  158.                             ch.say(me.getNick() + ", please watch your language!");
  159.                         } else {
  160.                             ch.kick(me.getNick(), "Did not follow the rules!");
  161.                             warnings.remove(me.getNick());
  162.                         }
  163.                         return;
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.     }
  169.    
  170.     // O(n) complexity, pass through array of allowed users
  171.     private boolean isUserAllowed(String nick) {
  172.         nick = nick.toLowerCase();
  173.         for (String n : allowed_users) {
  174.             n = n.toLowerCase();
  175.             if (n.equals(nick))
  176.                 return true;
  177.         }
  178.         return false;
  179.     }
  180.    
  181.     // O(n) complexity, pass through array of afk users
  182.     private boolean isUserAfk(String nick) {
  183.         nick = nick.toLowerCase();
  184.         for (String n: afk_users) {
  185.             n = n.toLowerCase();
  186.             if (n.equals(nick))
  187.                 return true;
  188.         }
  189.         return false;
  190.     }
  191.    
  192.     // Initialization
  193.     public static void main(String[] args) {
  194.         JFrame idle = new JFrame();
  195.         idle.setDefaultCloseOperation(3);
  196.         idle.setTitle("TinkerBot");
  197.         idle.setVisible(true);
  198.         new Main();
  199.     }
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement