Advertisement
Vaerys_Dawn

AnnotationListener

Mar 25th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.94 KB | None | 0 0
  1. package com.github.vaerys.main;
  2.  
  3. import com.github.vaerys.commands.CommandObject;
  4. import com.github.vaerys.enums.ChannelSetting;
  5. import com.github.vaerys.handlers.*;
  6. import com.github.vaerys.masterobjects.GuildObject;
  7. import com.github.vaerys.masterobjects.UserObject;
  8. import com.github.vaerys.objects.LogObject;
  9. import com.github.vaerys.objects.UserCountDown;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import sx.blah.discord.api.events.EventSubscriber;
  13. import sx.blah.discord.handle.impl.events.ReadyEvent;
  14. import sx.blah.discord.handle.impl.events.guild.GuildLeaveEvent;
  15. import sx.blah.discord.handle.impl.events.guild.channel.ChannelCreateEvent;
  16. import sx.blah.discord.handle.impl.events.guild.channel.ChannelDeleteEvent;
  17. import sx.blah.discord.handle.impl.events.guild.channel.ChannelUpdateEvent;
  18. import sx.blah.discord.handle.impl.events.guild.channel.message.*;
  19. import sx.blah.discord.handle.impl.events.guild.channel.message.reaction.ReactionAddEvent;
  20. import sx.blah.discord.handle.impl.events.guild.member.UserBanEvent;
  21. import sx.blah.discord.handle.impl.events.guild.member.UserJoinEvent;
  22. import sx.blah.discord.handle.impl.events.guild.member.UserLeaveEvent;
  23. import sx.blah.discord.handle.impl.events.guild.member.UserRoleUpdateEvent;
  24. import sx.blah.discord.handle.impl.events.guild.role.RoleDeleteEvent;
  25. import sx.blah.discord.handle.impl.events.guild.role.RoleUpdateEvent;
  26. import sx.blah.discord.handle.impl.obj.ReactionEmoji;
  27. import sx.blah.discord.handle.obj.IChannel;
  28. import sx.blah.discord.handle.obj.IGuild;
  29. import sx.blah.discord.handle.obj.IMessage;
  30. import sx.blah.discord.handle.obj.Permissions;
  31.  
  32. import java.util.List;
  33.  
  34. /**
  35.  * Created by Vaerys on 03/08/2016.
  36.  */
  37.  
  38. @SuppressWarnings({"unused", "StringConcatenationInsideStringBufferAppend"})
  39. public class AnnotationListener {
  40.  
  41.     final static Logger logger = LoggerFactory.getLogger(AnnotationListener.class);
  42.  
  43.     public static void updateVariables(IGuild guild) {
  44.         long guildID = guild.getLongID();
  45.         GuildObject guildObject = Globals.getGuildContent(guildID);
  46.         guildObject.config.updateVariables(guild);
  47.         guildObject.characters.updateVars(guild);
  48.     }
  49.  
  50.     /**
  51.      * Sets up the relevant files for each guild.
  52.      */
  53.  
  54.     @EventSubscriber
  55.     public void onGuildLeaveEvent(GuildLeaveEvent event) {
  56.         Globals.unloadGuild(event.getGuild().getLongID());
  57.     }
  58.  
  59.     @EventSubscriber
  60.     public void onReadyEvent(ReadyEvent event) {
  61.         Globals.isReady = true;
  62.         RequestHandler.changePresence(Globals.playing);
  63.         RequestHandler.updateUsername(Globals.botName);
  64.     }
  65.  
  66.     @EventSubscriber
  67.     public void onSystemMessageReceivedEvent(MessageSendEvent event) {
  68.         IMessage message = event.getMessage();
  69.         if (message.getType() != IMessage.Type.CHANEL_PINNED_MESSAGE) return;
  70.         if (!message.getAuthor().equals(event.getClient().getOurUser())) return;
  71.         RequestHandler.deleteMessage(message);
  72.     }
  73.  
  74.     @EventSubscriber
  75.     public void onMessageReceivedEvent(MessageReceivedEvent event) {
  76.         try {
  77.             if (event.getAuthor().isBot()) return;
  78.  
  79.             CommandObject command = new CommandObject(event.getMessage());
  80.  
  81.             //Set Console Response Channel.
  82.             if (command.user.get().equals(command.client.creator)) {
  83.                 Globals.consoleMessageCID = command.channel.longID;
  84.             }
  85.             command.guild.handleWelcome(command);
  86.  
  87.             //message and command handling
  88.             new MessageHandler(command.message.get().getContent(), command, event.getChannel().isPrivate());
  89.         } catch (Exception e) {
  90.             String errorPos = "";
  91.             for (StackTraceElement s : e.getStackTrace()) {
  92.                 if (s.toString().contains("com.github.vaerys")) {
  93.                     errorPos = s.toString();
  94.                     break;
  95.                 }
  96.             }
  97.             StringBuilder builder = new StringBuilder();
  98.             builder.append("> I caught an Error, Please send this Error message and the message that caused this error " +
  99.                     "to my **Direct Messages** so my developer can look at it and try to solve the issue.\n```\n");
  100.             builder.append(e.getClass().getName());
  101.             builder.append(": " + e.getMessage());
  102.             if (!errorPos.isEmpty()) {
  103.                 builder.append("\n" + Constants.PREFIX_INDENT + "at " + errorPos);
  104.             }
  105.             builder.append("```");
  106.             RequestHandler.sendMessage(builder.toString(), event.getChannel());
  107.             Globals.addToLog(new LogObject("ERROR", "MESSAGE_HANDLER", event.getMessage().getContent(),
  108.                     event.getChannel().getLongID(), event.getAuthor().getLongID(), event.getMessageID(), event.getGuild().getLongID()));
  109.             Utility.sendStack(e);
  110.         }
  111.     }
  112.  
  113.     @EventSubscriber
  114.     public void onMentionEvent(MentionEvent event) {
  115.         // nothing interesting happens.
  116.     }
  117.  
  118.     @EventSubscriber
  119.     public void onRoleUpdateEvent(RoleUpdateEvent event) {
  120.         updateVariables(event.getGuild());
  121.     }
  122.  
  123.     @EventSubscriber
  124.     public void onRoleDeleteEvent(RoleDeleteEvent event) {
  125.         updateVariables(event.getGuild());
  126.     }
  127.  
  128.     @EventSubscriber
  129.     public void onChannelUpdateEvent(ChannelUpdateEvent event) {
  130.         if (event.getChannel().isPrivate()) {
  131.             return;
  132.         }
  133.         updateVariables(event.getNewChannel().getGuild());
  134.         LoggingHandler.doChannelUpdateLog(event);
  135.     }
  136.  
  137.     @EventSubscriber
  138.     public void onChannelDeleteEvent(ChannelDeleteEvent event) {
  139.         if (event.getChannel().isPrivate()) {
  140.             return;
  141.         }
  142.         LoggingHandler.doChannelDeleteLog(event);
  143.         updateVariables(event.getChannel().getGuild());
  144.     }
  145.  
  146.     @EventSubscriber
  147.     public void onChannelCreateEvent(ChannelCreateEvent event) {
  148.         LoggingHandler.doChannelCreateLog(event);
  149.     }
  150.  
  151.     @EventSubscriber
  152.     public void onReactionAddEvent(ReactionAddEvent event) {
  153.  
  154. //        IUser owner1 = event.getMessage().getAuthor();
  155. //        IUser author = event.getAuthor();
  156. //        IUser reactor = event.getUser();
  157. //
  158. //        System.out.println("Owner: " + owner1.getName() + "#" + owner1.getDiscriminator() + "(" + owner1.getLongID() + ")" + " - " + owner1.getDisplayName(event.getGuild()));
  159. //        System.out.println("Author: " + author.getName() + "#" + author.getDiscriminator() + "(" + author.getLongID() + ")" + " - " + author.getDisplayName(event.getGuild()));
  160. //        System.out.println("Reactor: " + reactor.getName() + "#" + reactor.getDiscriminator() + "(" + reactor.getLongID() + ")" + " - " + reactor.getDisplayName(event.getGuild()));
  161.  
  162.  
  163.         if (event.getUser().isBot()) {
  164.             return;
  165.         }
  166.         ReactionEmoji x = Utility.getReaction("x");
  167.         ReactionEmoji pin = Utility.getReaction(Constants.EMOJI_ADD_PIN);
  168.         ReactionEmoji thumbsUp = Utility.getReaction(Constants.EMOJI_APPROVE);
  169.         ReactionEmoji thumbsDown = Utility.getReaction(Constants.EMOJI_DISAPPROVE);
  170.         ReactionEmoji heart = Utility.getReaction(Constants.EMOJI_LIKE_PIN);
  171.         ReactionEmoji remove = Utility.getReaction(Constants.EMOJI_REMOVE_PIN);
  172.         ReactionEmoji emoji = event.getReaction().getEmoji();
  173.  
  174.         if (emoji == null) return;
  175.  
  176.         IMessage message = event.getMessage();
  177.         if (message == null) message = event.getChannel().getMessageByID(event.getMessageID());
  178.  
  179.         CommandObject object = new CommandObject(message);
  180.         UserObject pinner = new UserObject(event.getUser(), object.guild);
  181.         UserObject owner = new UserObject(event.getAuthor(), object.guild);
  182.  
  183.  
  184.         //do only on server channels
  185.         if (!event.getChannel().isPrivate() && emoji.isUnicode()) {
  186.             //if is x and can bypass
  187.             if (emoji.equals(remove)) ArtHandler.unPin(object);
  188.             if (emoji.equals(x) && GuildHandler.testForPerms(object, Permissions.MANAGE_MESSAGES)
  189.                     && object.client.bot.longID == object.user.longID)
  190.                 RequestHandler.deleteMessage(object.message);
  191.             //if is pushpin
  192.             if (emoji.equals(pin)) ArtHandler.pinMessage(object, pinner, owner);
  193.  
  194.             //if is thumbsup or thumbs down and is creator.
  195.             if (emoji.equals(thumbsUp) || emoji.equals(thumbsDown))
  196.                 QueueHandler.reactionAdded(object, event.getReaction());
  197.             //if is hear and is pinned then give xp
  198.             if (emoji.equals(heart))
  199.                 ArtHandler.pinLiked(object, pinner, owner);
  200.             //do only within Direct messages
  201.         } else if (event.getChannel().isPrivate() && emoji.isUnicode()) {
  202.             //if anyone uses x
  203.             if (emoji.equals(x) && object.client.bot.longID == object.user.longID) {
  204.                 RequestHandler.deleteMessage(message);
  205.             }
  206.         }
  207.     }
  208.  
  209.     @EventSubscriber
  210.     public void onMessageDeleteEvent(MessageDeleteEvent event) {
  211.         if (event.getChannel().isPrivate()) return;
  212.         if (!Globals.isReady) return;
  213.         if (event.getMessage() == null) return;
  214.         if (event.getGuild().getUserByID(event.getAuthor().getLongID()) == null) return;
  215.         CommandObject command = new CommandObject(event.getMessage());
  216.         if (!command.guild.config.moduleLogging) return;
  217.         LoggingHandler.logDelete(command, event.getMessage());
  218.     }
  219.  
  220.     private boolean shouldLog(CommandObject command) {
  221.         if (command.guild == null) {
  222.             return false;
  223.         }
  224.         if (!command.guild.config.moduleLogging) return false;
  225.         List<IChannel> infoID = command.guild.getChannelsByType(ChannelSetting.INFO);
  226.         List<IChannel> serverLogID = command.guild.getChannelsByType(ChannelSetting.SERVER_LOG);
  227.         List<IChannel> adminLogID = command.guild.getChannelsByType(ChannelSetting.ADMIN_LOG);
  228.         List<IChannel> dontLog = command.guild.getChannelsByType(ChannelSetting.DONT_LOG);
  229.         if (dontLog.size() != 0) {
  230.             if (dontLog.contains(command.channel.get())) {
  231.                 return false;
  232.             }
  233.         }
  234.         if (command.guild.config.dontLogBot && command.user.get().isBot()) {
  235.             return false;
  236.         }
  237.         if (command.message.get() == null) {
  238.             return false;
  239.         }
  240.         if (serverLogID.size() != 0 && serverLogID.get(0).equals(command.channel.get()) && command.client.bot.longID == command.user.longID) {
  241.             return false;
  242.         }
  243.         if (infoID.size() != 0 && infoID.get(0).equals(command.channel.get()) && command.client.bot.longID == command.user.longID) {
  244.             return false;
  245.         }
  246.         if (adminLogID.size() != 0 && adminLogID.get(0).equals(command.channel.get()) && command.client.bot.longID == command.user.longID) {
  247.             return false;
  248.         }
  249.         return true;
  250.     }
  251.  
  252.     @EventSubscriber
  253.     public void onUserJoinEvent(UserJoinEvent event) {
  254.         GuildObject content = Globals.getGuildContent(event.getGuild().getLongID());
  255.         UserObject user = new UserObject(event.getUser().getLongID(), content);
  256.         if (content.config.welcomeMessages && !user.get().isBot()) {
  257.             String message = content.config.getJoinMessage();
  258.             message = message.replace("<server>", event.getGuild().getName());
  259.             message = message.replace("<user>", event.getUser().getName());
  260.             user.sendDm(message);
  261.         }
  262.         //check to see if the user's account is brand new or not and send a message if true. (new = account is younger than 5 hours)
  263.         if (content.config.checkNewUsers) {
  264.             long difference = event.getJoinTime().toEpochMilli() - event.getUser().getCreationDate().toEpochMilli();
  265.             if ((5 * 60 * 60 * 1000) > difference) {
  266.                 IChannel admin = content.getChannelByType(ChannelSetting.ADMIN_LOG);
  267.                 if (admin == null) {
  268.                     admin = event.getGuild().getDefaultChannel();
  269.                 }
  270.                 if (admin != null) {
  271.                     RequestHandler.sendMessage("> New user " + user.mention() + " has a creation time less than 5 hours ago.", admin);
  272.                 }
  273.             }
  274.         }
  275.         if (content.config.moduleJoinMessages && content.config.sendJoinMessages) {
  276.             JoinHandler.customJoinMessages(content, event.getUser());
  277.         }
  278.         for (UserCountDown u : content.users.mutedUsers) {
  279.             if (u.getID() == event.getUser().getLongID()) {
  280.                 IChannel admin = content.getChannelByType(ChannelSetting.ADMIN);
  281.                 if (admin != null) {
  282.                     RequestHandler.sendMessage("> Looks like " + user.mention() + " has returned, I have muted them again for you.", admin);
  283.                 }
  284.                 RequestHandler.roleManagement(user, content, content.config.getMutedRoleID(), true);
  285.             }
  286.         }
  287.         if (!content.config.moduleLogging) return;
  288.         LoggingHandler.doJoinLeaveLog(event, true);
  289.     }
  290.  
  291.     @EventSubscriber
  292.     public void onUserLeaveEvent(UserLeaveEvent event) {
  293.         LoggingHandler.doJoinLeaveLog(event, false);
  294.     }
  295.  
  296.     @EventSubscriber
  297.     public void onMessageUpdateEvent(MessageUpdateEvent event) {
  298.         if (event.getOldMessage() == null || event.getNewMessage() == null) return;
  299.         if (event.getNewMessage().getContent() == null || event.getOldMessage().getContent() == null) return;
  300.         if (event.getNewMessage().getContent().isEmpty() || event.getOldMessage().getContent().isEmpty()) return;
  301.         if (event.getNewMessage().getContent().equals(event.getOldMessage().getContent())) return;
  302.         if (event.getChannel().isPrivate()) return;
  303.  
  304.         LoggingHandler.doMessageEditLog(event);
  305.     }
  306.  
  307.     @EventSubscriber
  308.     public void onUserRoleUpdateEvent(UserRoleUpdateEvent event) {
  309.         LoggingHandler.doRoleUpdateLog(event);
  310.     }
  311.  
  312.     @EventSubscriber
  313.     public void onUserBanEvent(UserBanEvent event) {
  314.         LoggingHandler.doBanLog(event);
  315.     }
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement