Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.peakesports.Climb.Channels;
- import net.dv8tion.jda.api.EmbedBuilder;
- import net.dv8tion.jda.api.MessageBuilder;
- import net.dv8tion.jda.api.entities.Guild;
- import net.dv8tion.jda.api.entities.Member;
- import net.dv8tion.jda.api.entities.Role;
- import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
- import net.dv8tion.jda.api.hooks.ListenerAdapter;
- import net.peakesports.Climb.Challenges.Challenge;
- import net.peakesports.Climb.Challenges.ChallengeManager;
- import net.peakesports.Climb.Main;
- import net.peakesports.Climb.Teams.Team;
- import net.peakesports.Climb.Teams.TeamManager;
- import net.peakesports.Climb.Utils;
- import java.awt.*;
- import java.sql.SQLException;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- public class ChallengeChannel extends ListenerAdapter {
- private List<String> staffRoles;
- private List<String> invalidClimbRoles;
- private ChallengeManager challengeManager;
- private TeamManager teamManager;
- private Utils utils;
- public ChallengeChannel() {
- staffRoles = Arrays.asList("OWNER", "ADMINISTRATOR");
- invalidClimbRoles = Arrays.asList("HEAD OF STAFF", "STAFF", "MANAGERS", "NITRO BOOSTER", "DIVISION 1", "DIVISION 2", "DIVISION 3");
- challengeManager = Main.getChallengeManager();
- teamManager = Main.getTeamManager();
- utils = Main.getUtils();
- }
- public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
- if (!e.getChannel().getName().equals("challenge"))
- return;
- if (e.getAuthor().equals(e.getJDA().getSelfUser()))
- return;
- Member member = e.getMember();
- String message = e.getMessage().getContentRaw();
- if (!message.substring(0, 1).equals("!")) {
- e.getMessage().delete().reason("Invalid Command.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Command Error]", "Type **!help** to see the list of allowed commands in this channel.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- }
- String command = message.substring(1).split(" ")[0].toUpperCase();
- if (command.equals("HELP")) {
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.LIGHT_GRAY);
- builder.setDescription("**!help** - Command Information:");
- String asMention = e.getGuild().getRolesByName("TEAM", true).get(0).getAsMention();
- builder.addField("[Challenge Team]", "!challenge " + asMention, true);
- builder.addField("[Accept Request]", "!accept " + asMention, true);
- builder.addField("[Reject Request]", "!reject " + asMention, true);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- boolean inClimb = false;
- Role teamRole = null;
- for (Role role : member.getRoles()) {
- if (role.getName().equalsIgnoreCase("The Climb"))
- inClimb = true;
- else if (!invalidClimbRoles.contains(role.getName().toUpperCase()) && !role.getName().toUpperCase().contains("MANAGER"))
- teamRole = role;
- }
- if (!inClimb) {
- e.getMessage().delete().reason("Member not part of The Climb.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Missing Role]", "You do not have permission to speak in this channel without the **[The Climb]** role.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- if (teamRole == null) {
- e.getMessage().delete().reason("Invalid Role.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Invalid Role]", "You do not have permission to speak in this channel without a team role.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- List<Role> mentionedRoles = e.getMessage().getMentionedRoles();
- if(mentionedRoles.size() != 1) {
- e.getMessage().delete().reason("Invalid # of Mentioned Role.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Mention Not Found]", "You must mention a team.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- if(mentionedRoles.contains(teamRole)) {
- e.getMessage().delete().reason("Invalid Mentioned Role.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Invalid Mention]", "You must mention a team other than your own.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- Team team;
- try {
- team = new Team(e.getGuild(), teamRole);
- } catch (SQLException ex) {
- e.getMessage().delete().reason("SQL Exception.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- 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);
- e.getChannel().sendMessage(builder.build()).queue();
- utils.logMessage(e.getGuild(), builder);
- ex.printStackTrace();
- return;
- }
- if (team == null) {
- e.getMessage().delete().reason("Team Load Error.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Team Error]", "There was an error trying to load your team: " + teamRole.getAsMention() + ". Contact a staff member for further information.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- utils.logMessage(e.getGuild(), builder);
- return;
- }
- Team.Division division = team.getDivision();
- List<Team> teams = teamManager.getDivisionBasedTeams(e.getGuild()).get(division);
- boolean mentionedInDivision = false;
- for (Team t : teams) {
- if (mentionedRoles.contains(t.getRole())) {
- mentionedInDivision = true;
- break;
- }
- }
- if (!mentionedInDivision) {
- e.getMessage().delete().reason("Invalid Mentioned Role.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Invalid Mention]", "You must mention a team in your division.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- Team mentioned;
- try {
- mentioned = new Team(e.getGuild(), mentionedRoles.get(0));;
- } catch (SQLException ex) {
- e.getMessage().delete().reason("SQL Exception.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- 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);
- e.getChannel().sendMessage(builder.build()).queue();
- utils.logMessage(e.getGuild(), builder);
- ex.printStackTrace();
- return;
- }
- if (mentioned == null) {
- e.getMessage().delete().reason("Team Load Error.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- 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);
- e.getChannel().sendMessage(builder.build()).queue();
- utils.logMessage(e.getGuild(), builder);
- return;
- }
- if (message.split(" ").length == 2) {
- if (command.equals("CHALLENGE")) {
- List<Challenge> challenges = challengeManager.getChallenges(e.getGuild(), teamRole, Arrays.asList(
- Challenge.State.REQUESTED,
- Challenge.State.IN_PROGRESS));
- if (challenges.size() != 0) {
- boolean unable = false;
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- for (Challenge challenge : challenges) {
- if (!challenge.getChallenger().equals(teamRole))
- continue;
- if (challenge.getState() == Challenge.State.REQUESTED) {
- builder.addField("[Challenge Error]", challenge.getChallenger().getAsMention() +
- " already has requested " + challenge.getChallenged().getAsMention() +
- " to a challenge.", false);
- }
- if (challenge.getState() == Challenge.State.IN_PROGRESS) {
- builder.addField("[Challenge Error]", challenge.getChallenger().getAsMention() +
- " is already in a challenge against " + challenge.getChallenged().getAsMention() +
- ".", false);
- }
- builder.addField("[Existing Challenge ID]", challenge.getId() + "", false);
- unable = true;
- break;
- }
- if (unable) {
- e.getMessage().delete().reason("Unable to Challenge.").queue();
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- }
- int minWindow = teams.indexOf(teamRole) < 2 ? 0 : teams.indexOf(teamRole) - 2;
- int maxWindow = teams.indexOf(teamRole) + 2;
- if (minWindow <= teams.indexOf(mentioned) && maxWindow >= teams.indexOf(mentioned)) {
- try {
- Challenge challenge = new Challenge(e.getGuild(), teamRole, mentionedRoles.get(0));
- e.getMessage().delete().reason("Successful Creation.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Challenge Created]", teamRole.getAsMention() + " has challenged " + mentionedRoles.get(0).getAsMention() + ". They have 24 hours to respond to your request.", false);
- builder.addField("[Challenge ID]", challenge.getId() + "", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- } catch (SQLException ex) {
- e.getMessage().delete().reason("SQL Exception.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[SQL Exception]", "There was an SQL exception while trying to create a challenge. Contact a staff member for further information.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- utils.logMessage(e.getGuild(), builder);
- ex.printStackTrace();
- return;
- }
- } else {
- e.getMessage().delete().reason("Mentioned Team Not In Range.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Range Error]", mentionedRoles.get(0).getAsMention() + " is not within the range of whom you can challenge.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- return;
- }
- } else if (command.equals("ACCEPT")) {
- e.getChannel().sendMessage("ACCEPT").queue();
- return;
- } else if (command.equals("REJECT")) {
- e.getChannel().sendMessage("REJECT").queue();
- return;
- }
- }
- e.getMessage().delete().reason("Invalid command.").queue();
- EmbedBuilder builder = Utils.embed(e.getGuild().getName(), member, e.getMessageId());
- builder.setColor(Color.RED);
- builder.addField("[Command Error]", "Type **!help** to see the list of allowed commands in this channel.", false);
- e.getChannel().sendMessage(builder.build()).queue();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement