Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Random;
- import javax.swing.JFrame;
- import jerklib.*;
- import jerklib.events.*;
- import jerklib.events.IRCEvent.*;
- import jerklib.listeners.*;
- public class Main implements IRCEventListener {
- private static final String COMMAND_CHAR = "-"; // MUST BE 1 CHARACTER LONG
- private static final String PASSWORD = "*****";
- private static final String[] BAD_WORDS = {"fuck","fucking","cunt","pussy","nigger",
- "nigga","bitch","slut","vagina","penis","shit","cock","dick"};
- private ConnectionManager con;
- private ArrayList<String> allowed_users; // store masters usernames
- private ArrayList<String> afk_users; // store afk usernames
- private HashMap<String, Object> warnings; // store warnings
- public Main() {
- con = new ConnectionManager(new Profile("TinkerBot"));
- con.requestConnection("irc.geekshed.net").addIRCEventListener(this);
- allowed_users = Util.getMasters();
- afk_users = new ArrayList<String>();
- warnings = new HashMap<String, Object>();
- }
- public void receiveEvent(IRCEvent e) {
- System.out.println(e.getRawEventData());
- // When sucessfully connected to irc
- if (e.getType() == Type.CONNECT_COMPLETE) {
- e.getSession().join("#tinkernut");
- // Join tinkernut channel
- } else if (e.getType() == Type.JOIN_COMPLETE) {
- // Identify
- JoinCompleteEvent jce = (JoinCompleteEvent) e;
- jce.getSession().sayPrivate("nickserv", "identify " + PASSWORD);
- } else if (e.getType() == Type.JOIN) {
- JoinEvent je = (JoinEvent) e;
- je.getChannel().say("Welcome, " + je.getNick());
- // Handle commands
- } else if (e.getType() == Type.CHANNEL_MESSAGE) {
- MessageEvent me = (MessageEvent) e;
- Channel ch = me.getChannel();
- String msg = me.getMessage();
- // high lvl commands
- // high lvl commands require to be added by the bot master(s)
- // or to be ... a bot master
- if (isUserAllowed(me.getNick())) {
- // say command
- if (msg.startsWith(COMMAND_CHAR + "say ")) {
- ch.say(msg.substring(5));
- // quit command
- } else if (msg.equals(COMMAND_CHAR + "quit")) {
- con.quit();
- System.exit(0);
- // add command
- } else if (msg.startsWith(COMMAND_CHAR + "add ")) {
- if (!isUserAllowed(msg.substring(5))) {
- for (String user : ch.getNicks()) {
- if (user.toLowerCase() == msg.substring(5))
- allowed_users.add(user);
- }
- ch.say("User " + msg.substring(5) + " was added!");
- } else {
- ch.say(msg.substring(5) + " already controls the bot!");
- }
- // rem command
- } else if (msg.startsWith(COMMAND_CHAR + "rem ")) {
- allowed_users.remove(msg.substring(5));
- ch.say("User " + msg.substring(5) + " was removed!");
- // list command
- } else if (msg.equals(COMMAND_CHAR + "list")) {
- ch.say("There are " + ch.getNicks().size() + " users online!");
- // controls command
- } else if (msg.equals(COMMAND_CHAR + "controls")) {
- StringBuilder strb = new StringBuilder();
- for (String user : allowed_users) {
- strb.append(user);
- strb.append(" ");
- }
- ch.say(strb.toString());
- // kick command
- } else if (msg.startsWith(COMMAND_CHAR + "kick ")) {
- ch.kick(msg.substring(6), "");
- // time command
- } else if (msg.equals(COMMAND_CHAR + "time")) {
- SimpleDateFormat formatter = new SimpleDateFormat("K:mm:ss a, z");
- ch.say(formatter.format(new Date()));
- // help command
- } else if (msg.equals(COMMAND_CHAR + "help")) {
- 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");
- // ?character command
- } else if (msg.equals("?character")) {
- ch.say(COMMAND_CHAR);
- } else if (msg.startsWith(COMMAND_CHAR + "jail ")) {
- String subst = msg.substring(6);
- int mins = Integer.parseInt(subst.substring(0, subst.indexOf(" ")));
- String user = subst.substring(subst.indexOf(" "));
- ch.say("TEST: Jail " + user + " for " + mins + " minutes!");
- }
- }
- // low lvl commands
- // low lvl commands can be used by any user, it doesn't require permissions
- // roll command
- if (msg.equals(COMMAND_CHAR + "roll")) {
- ch.say("" + (new Random().nextInt(100) + 1));
- // afk command
- } else if (msg.equals(COMMAND_CHAR + "afk")) {
- if (!isUserAfk(me.getNick())) {
- afk_users.add(me.getNick());
- ch.say(me.getNick() + " is now afk.");
- }
- // back command
- } else if (msg.equals(COMMAND_CHAR + "back")) {
- if (isUserAfk(me.getNick())) {
- afk_users.remove(me.getNick());
- ch.say(me.getNick() + " is now back.");
- }
- }
- // analyze messages
- // check for afk people
- for (String user : afk_users) {
- if (msg.toLowerCase().contains(user.toLowerCase())) {
- ch.say("The user " + user + " is currently afk.");
- }
- }
- // check for all caps messages
- if (Util.calculateAllCapsRatio(msg) >= 80 && (Util.calculateWordNumber(msg) >= 3 || msg.length() >= 8)) {
- if (warnings.get(me.getNick()) == null) {
- warnings.put(me.getNick(), new Object());
- ch.say(me.getNick() + ", please do not use all caps!");
- } else {
- ch.kick(me.getNick(), "Did not follow the rules!");
- warnings.remove(me.getNick());
- }
- return;
- }
- // check for bad words
- for (String word : Util.splitIntoWord(msg)) {
- word = word.toLowerCase();
- for (String bad_word : BAD_WORDS) {
- if (bad_word.equals(word)) {
- if (warnings.get(me.getNick()) == null) {
- warnings.put(me.getNick(), new Object());
- ch.say(me.getNick() + ", please watch your language!");
- } else {
- ch.kick(me.getNick(), "Did not follow the rules!");
- warnings.remove(me.getNick());
- }
- return;
- }
- }
- }
- }
- }
- // O(n) complexity, pass through array of allowed users
- private boolean isUserAllowed(String nick) {
- nick = nick.toLowerCase();
- for (String n : allowed_users) {
- n = n.toLowerCase();
- if (n.equals(nick))
- return true;
- }
- return false;
- }
- // O(n) complexity, pass through array of afk users
- private boolean isUserAfk(String nick) {
- nick = nick.toLowerCase();
- for (String n: afk_users) {
- n = n.toLowerCase();
- if (n.equals(nick))
- return true;
- }
- return false;
- }
- // Initialization
- public static void main(String[] args) {
- JFrame idle = new JFrame();
- idle.setDefaultCloseOperation(3);
- idle.setTitle("TinkerBot");
- idle.setVisible(true);
- new Main();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement