Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.67 KB | None | 0 0
  1. package net.peakesports.Climb.Channels;
  2.  
  3. import net.dv8tion.jda.api.EmbedBuilder;
  4. import net.dv8tion.jda.api.MessageBuilder;
  5. import net.dv8tion.jda.api.entities.Guild;
  6. import net.dv8tion.jda.api.entities.Member;
  7. import net.dv8tion.jda.api.entities.Role;
  8. import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
  9. import net.dv8tion.jda.api.hooks.ListenerAdapter;
  10. import net.peakesports.Climb.Challenges.Challenge;
  11. import net.peakesports.Climb.Challenges.ChallengeManager;
  12. import net.peakesports.Climb.Main;
  13. import net.peakesports.Climb.Teams.Team;
  14. import net.peakesports.Climb.Teams.TeamManager;
  15. import net.peakesports.Climb.Utils;
  16.  
  17. import java.awt.*;
  18. import java.sql.SQLException;
  19. import java.util.Arrays;
  20. import java.util.Date;
  21. import java.util.List;
  22.  
  23. public class ChallengeChannel extends ListenerAdapter {
  24.  
  25. private List<String> staffRoles;
  26. private List<String> invalidClimbRoles;
  27. private ChallengeManager challengeManager;
  28. private TeamManager teamManager;
  29. private Utils utils;
  30.  
  31. public ChallengeChannel() {
  32. staffRoles = Arrays.asList("OWNER", "ADMINISTRATOR");
  33. invalidClimbRoles = Arrays.asList("HEAD OF STAFF", "STAFF", "MANAGERS", "NITRO BOOSTER", "DIVISION 1", "DIVISION 2", "DIVISION 3");
  34. challengeManager = Main.getChallengeManager();
  35. teamManager = Main.getTeamManager();
  36. utils = Main.getUtils();
  37. }
  38.  
  39. public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
  40.  
  41. if (!e.getChannel().getName().equals("challenge"))
  42. return;
  43.  
  44. if (e.getAuthor().equals(e.getJDA().getSelfUser()))
  45. return;
  46.  
  47. Member member = e.getMember();
  48. String message = e.getMessage().getContentRaw();
  49.  
  50. if (!message.substring(0, 1).equals("!")) {
  51. e.getMessage().delete().reason("Invalid Command.").queue();
  52. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  53. builder.setColor(Color.RED);
  54. builder.addField("[Command Error]", "Type **!help** to see the list of allowed commands in this channel.", false);
  55. e.getChannel().sendMessage(builder.build()).queue();
  56.  
  57. }
  58.  
  59. String command = message.substring(1).split(" ")[0].toUpperCase();
  60.  
  61. if (command.equals("HELP")) {
  62.  
  63. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  64. builder.setColor(Color.LIGHT_GRAY);
  65. builder.setDescription("**!help** - Command Information:");
  66. String asMention = e.getGuild().getRolesByName("TEAM", true).get(0).getAsMention();
  67. builder.addField("[Challenge Team]", "!challenge " + asMention, true);
  68. builder.addField("[Accept Request]", "!accept " + asMention, true);
  69. builder.addField("[Reject Request]", "!reject " + asMention, true);
  70. e.getChannel().sendMessage(builder.build()).queue();
  71. return;
  72. }
  73.  
  74. boolean inClimb = false;
  75. Role teamRole = null;
  76. for (Role role : member.getRoles()) {
  77. if (role.getName().equalsIgnoreCase("The Climb"))
  78. inClimb = true;
  79. else if (!invalidClimbRoles.contains(role.getName().toUpperCase()) && !role.getName().toUpperCase().contains("MANAGER"))
  80. teamRole = role;
  81. }
  82.  
  83. if (!inClimb) {
  84. e.getMessage().delete().reason("Member not part of The Climb.").queue();
  85. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  86. builder.setColor(Color.RED);
  87. builder.addField("[Missing Role]", "You do not have permission to speak in this channel without the **[The Climb]** role.", false);
  88. e.getChannel().sendMessage(builder.build()).queue();
  89. return;
  90. }
  91.  
  92. if (teamRole == null) {
  93. e.getMessage().delete().reason("Invalid Role.").queue();
  94. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  95. builder.setColor(Color.RED);
  96. builder.addField("[Invalid Role]", "You do not have permission to speak in this channel without a team role.", false);
  97. e.getChannel().sendMessage(builder.build()).queue();
  98. return;
  99. }
  100.  
  101. List<Role> mentionedRoles = e.getMessage().getMentionedRoles();
  102.  
  103. if(mentionedRoles.size() != 1) {
  104. e.getMessage().delete().reason("Invalid # of Mentioned Role.").queue();
  105. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  106. builder.setColor(Color.RED);
  107. builder.addField("[Mention Not Found]", "You must mention a team.", false);
  108. e.getChannel().sendMessage(builder.build()).queue();
  109. return;
  110. }
  111.  
  112. if(mentionedRoles.contains(teamRole)) {
  113. e.getMessage().delete().reason("Invalid Mentioned Role.").queue();
  114. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  115. builder.setColor(Color.RED);
  116. builder.addField("[Invalid Mention]", "You must mention a team other than your own.", false);
  117. e.getChannel().sendMessage(builder.build()).queue();
  118. return;
  119. }
  120.  
  121. Team team;
  122.  
  123. try {
  124. team = new Team(e.getGuild(), teamRole);
  125. } catch (SQLException ex) {
  126. e.getMessage().delete().reason("SQL Exception.").queue();
  127. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  128. builder.setColor(Color.RED);
  129. builder.addField("[SQL Exception]", "There was an SQL exception while trying to load your team: " + teamRole.getAsMention() + ". Contact a staff member for further information.", false);
  130. e.getChannel().sendMessage(builder.build()).queue();
  131. utils.logMessage(e.getGuild(), builder);
  132. ex.printStackTrace();
  133. return;
  134. }
  135.  
  136. if (team == null) {
  137. e.getMessage().delete().reason("Team Load Error.").queue();
  138. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  139. builder.setColor(Color.RED);
  140. builder.addField("[Team Error]", "There was an error trying to load your team: " + teamRole.getAsMention() + ". Contact a staff member for further information.", false);
  141. e.getChannel().sendMessage(builder.build()).queue();
  142. utils.logMessage(e.getGuild(), builder);
  143. return;
  144. }
  145.  
  146. Team.Division division = team.getDivision();
  147. List<Team> teams = teamManager.getDivisionBasedTeams(e.getGuild()).get(division);
  148. boolean mentionedInDivision = false;
  149.  
  150. for (Team t : teams) {
  151. if (mentionedRoles.contains(t.getRole())) {
  152. mentionedInDivision = true;
  153. break;
  154. }
  155. }
  156.  
  157. if (!mentionedInDivision) {
  158. e.getMessage().delete().reason("Invalid Mentioned Role.").queue();
  159. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  160. builder.setColor(Color.RED);
  161. builder.addField("[Invalid Mention]", "You must mention a team in your division.", false);
  162. e.getChannel().sendMessage(builder.build()).queue();
  163. return;
  164. }
  165.  
  166. Team mentioned;
  167.  
  168. try {
  169. mentioned = new Team(e.getGuild(), mentionedRoles.get(0));;
  170. } catch (SQLException ex) {
  171. e.getMessage().delete().reason("SQL Exception.").queue();
  172. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  173. builder.setColor(Color.RED);
  174. builder.addField("[SQL Exception]", "There was an SQL exception while trying to load mentioned team: " + mentionedRoles.get(0).getAsMention() + ". Contact a staff member for further information.", false);
  175. e.getChannel().sendMessage(builder.build()).queue();
  176. utils.logMessage(e.getGuild(), builder);
  177. ex.printStackTrace();
  178. return;
  179. }
  180.  
  181. if (mentioned == null) {
  182. e.getMessage().delete().reason("Team Load Error.").queue();
  183. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  184. builder.setColor(Color.RED);
  185. builder.addField("[Team Error]", "There was an error trying to load mentioned team: " + mentionedRoles.get(0).getAsMention() + ". Contact a staff member for further information.", false);
  186. e.getChannel().sendMessage(builder.build()).queue();
  187. utils.logMessage(e.getGuild(), builder);
  188. return;
  189. }
  190.  
  191. if (message.split(" ").length == 2) {
  192. if (command.equals("CHALLENGE")) {
  193. List<Challenge> challenges = challengeManager.getChallenges(e.getGuild(), teamRole, Arrays.asList(
  194. Challenge.State.REQUESTED,
  195. Challenge.State.IN_PROGRESS));
  196.  
  197. if (challenges.size() != 0) {
  198. boolean unable = false;
  199. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  200. builder.setColor(Color.RED);
  201.  
  202. for (Challenge challenge : challenges) {
  203.  
  204. if (!challenge.getChallenger().equals(teamRole))
  205. continue;
  206.  
  207. if (challenge.getState() == Challenge.State.REQUESTED) {
  208. builder.addField("[Challenge Error]", challenge.getChallenger().getAsMention() +
  209. " already has requested " + challenge.getChallenged().getAsMention() +
  210. " to a challenge.", false);
  211. }
  212.  
  213. if (challenge.getState() == Challenge.State.IN_PROGRESS) {
  214. builder.addField("[Challenge Error]", challenge.getChallenger().getAsMention() +
  215. " is already in a challenge against " + challenge.getChallenged().getAsMention() +
  216. ".", false);
  217. }
  218.  
  219. builder.addField("[Existing Challenge ID]", challenge.getId() + "", false);
  220. unable = true;
  221. break;
  222. }
  223.  
  224. if (unable) {
  225. e.getMessage().delete().reason("Unable to Challenge.").queue();
  226. e.getChannel().sendMessage(builder.build()).queue();
  227. return;
  228. }
  229. }
  230.  
  231. int minWindow = teams.indexOf(teamRole) < 2 ? 0 : teams.indexOf(teamRole) - 2;
  232. int maxWindow = teams.indexOf(teamRole) + 2;
  233. if (minWindow <= teams.indexOf(mentioned) && maxWindow >= teams.indexOf(mentioned)) {
  234. try {
  235. Challenge challenge = new Challenge(e.getGuild(), teamRole, mentionedRoles.get(0));
  236. e.getMessage().delete().reason("Successful Creation.").queue();
  237. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  238. builder.setColor(Color.RED);
  239. builder.addField("[Challenge Created]", teamRole.getAsMention() + " has challenged " + mentionedRoles.get(0).getAsMention() + ". They have 24 hours to respond to your request.", false);
  240. builder.addField("[Challenge ID]", challenge.getId() + "", false);
  241. e.getChannel().sendMessage(builder.build()).queue();
  242. return;
  243. } catch (SQLException ex) {
  244. e.getMessage().delete().reason("SQL Exception.").queue();
  245. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  246. builder.setColor(Color.RED);
  247. builder.addField("[SQL Exception]", "There was an SQL exception while trying to create a challenge. Contact a staff member for further information.", false);
  248. e.getChannel().sendMessage(builder.build()).queue();
  249. utils.logMessage(e.getGuild(), builder);
  250. ex.printStackTrace();
  251. return;
  252. }
  253. } else {
  254. e.getMessage().delete().reason("Mentioned Team Not In Range.").queue();
  255. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  256. builder.setColor(Color.RED);
  257. builder.addField("[Range Error]", mentionedRoles.get(0).getAsMention() + " is not within the range of whom you can challenge.", false);
  258. e.getChannel().sendMessage(builder.build()).queue();
  259. return;
  260. }
  261. } else if (command.equals("ACCEPT")) {
  262. e.getChannel().sendMessage("ACCEPT").queue();
  263. return;
  264. } else if (command.equals("REJECT")) {
  265. e.getChannel().sendMessage("REJECT").queue();
  266. return;
  267. }
  268. }
  269.  
  270.  
  271. e.getMessage().delete().reason("Invalid command.").queue();
  272. EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
  273. builder.setColor(Color.RED);
  274. builder.addField("[Command Error]", "Type **!help** to see the list of allowed commands in this channel.", false);
  275. e.getChannel().sendMessage(builder.build()).queue();
  276. }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement