From 931e16c2dae29dd448148f862ef4100e192e33d6 Mon Sep 17 00:00:00 2001 From: Hax Date: Wed, 18 Dec 2019 20:20:33 +0100 Subject: [PATCH] Fixed Perm error, Finished Starboard --- src/main/java/com/bbn/hadder/Hadder.java | 2 +- src/main/java/com/bbn/hadder/Rethink.java | 14 +++- ...oardCommand.java => StarBoardCommand.java} | 6 +- .../com/bbn/hadder/core/CommandHandler.java | 17 ++-- .../hadder/listener/StarboardListener.java | 79 +++++++++++++------ 5 files changed, 82 insertions(+), 36 deletions(-) rename src/main/java/com/bbn/hadder/commands/moderation/{SetStarBoardCommand.java => StarBoardCommand.java} (89%) diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index bf30069..62cf872 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -87,7 +87,7 @@ public class Hadder { new RegionChangeCommand(), new AboutCommand(), new LanguageCommand(), - new SetStarBoardCommand()), config, helpCommand); + new StarBoardCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 9d3ce64..f501971 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -81,6 +81,10 @@ public class Rethink { return out; } + public void remove(String table, String where, String wherevalue) { + r.table(table).filter(row -> row.g(where.toLowerCase()).eq(wherevalue)).delete().run(conn); + } + public void setup() { try { r.dbCreate("Hadder").run(conn); @@ -156,15 +160,19 @@ public class Rethink { } public void insertStarboardMessage(String messageid, String guildid, String starboardmessageid) { - this.insert("stars", r.hashMap("msg", messageid).with("guild", guildid).with("starboardmsg", starboardmessageid)); + this.insert("stars", r.hashMap("id", messageid).with("guild", guildid).with("starboardmsg", starboardmessageid)); } public String getStarboardMessage(String messageid) { - return (String) this.get("stars", "msg", messageid, "starboardmsg"); + return (String) this.get("stars", "id", messageid, "starboardmsg"); + } + + public void removeStarboardMessage(String messageid) { + this.remove("stars", "id", messageid); } public boolean hasStarboardMessage(String messageid) { - return this.get("stars", "msg", messageid, "guild") != null; + return this.get("stars", "id", messageid, "guild") != null; } public void updateRules(String guild_id, String message_id, String role_id, String accept_emote, String decline_emote) { diff --git a/src/main/java/com/bbn/hadder/commands/moderation/SetStarBoardCommand.java b/src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java similarity index 89% rename from src/main/java/com/bbn/hadder/commands/moderation/SetStarBoardCommand.java rename to src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java index bfd32c6..c8fa675 100644 --- a/src/main/java/com/bbn/hadder/commands/moderation/SetStarBoardCommand.java +++ b/src/main/java/com/bbn/hadder/commands/moderation/StarBoardCommand.java @@ -6,7 +6,7 @@ import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.TextChannel; -public class SetStarBoardCommand implements Command { +public class StarBoardCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { if (event.getMessage().getMentionedChannels().size()==1) { @@ -30,12 +30,14 @@ public class SetStarBoardCommand implements Command { if (args.length==2) { event.getRethink().setNeededstars(args[1], event.getGuild().getId()); + } else { + event.getRethink().setNeededstars("4", event.getGuild().getId()); } } @Override public String[] labels() { - return new String[]{"setstarboard"}; + return new String[]{"starboard"}; } @Override diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index 0949f5d..1f1be07 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -37,14 +37,15 @@ public class CommandHandler { CommandEvent commandEvent = new CommandEvent(event.getJDA(), event.getResponseNumber(), event.getMessage(), rethink, config, this, helpCommand, new MessageEditor(rethink, event.getAuthor())); - - if (!Arrays.asList(cmd.getClass().getAnnotations()).contains(Perms.class)) { - for (Perm perm : cmd.getClass().getAnnotation(Perms.class).value()) { - if (!perm.check(commandEvent)) { - commandEvent.getTextChannel() - .sendMessage(commandEvent.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()) - .queue(); - return; + if (cmd.getClass().getAnnotations().length>0) { + if (Arrays.asList(cmd.getClass().getAnnotations()).contains(Perms.class)) { + for (Perm perm : cmd.getClass().getAnnotation(Perms.class).value()) { + if (!perm.check(commandEvent)) { + commandEvent.getTextChannel() + .sendMessage(commandEvent.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()) + .queue(); + return; + } } } } diff --git a/src/main/java/com/bbn/hadder/listener/StarboardListener.java b/src/main/java/com/bbn/hadder/listener/StarboardListener.java index f5438a7..0a45dde 100644 --- a/src/main/java/com/bbn/hadder/listener/StarboardListener.java +++ b/src/main/java/com/bbn/hadder/listener/StarboardListener.java @@ -3,6 +3,7 @@ package com.bbn.hadder.listener; import com.bbn.hadder.Rethink; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.MessageBuilder; +import net.dv8tion.jda.api.entities.MessageReaction; import net.dv8tion.jda.api.events.message.react.GenericMessageReactionEvent; import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent; import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent; @@ -33,34 +34,68 @@ public class StarboardListener extends ListenerAdapter { if (event.getReaction().getReactionEmote().getName().equals("⭐")) { if (!rethink.hasStarboardMessage(event.getMessageId())) { if (rethink.hasStarboardChannel(event.getGuild().getId())) { - event.getChannel().retrieveMessageById(event.getMessageId()).queue(msg -> { - event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) - .sendMessage(new MessageBuilder() - .setContent("⭐1" + " " + event.getTextChannel().getAsMention()) - .setEmbed( - new EmbedBuilder() - .setAuthor(event.getUser().getAsTag()) - .setDescription(msg.getContentRaw()) - .setTimestamp(msg.getTimeCreated()).build()).build()).queue( - starboardmsg -> { - rethink.insertStarboardMessage(msg.getId(), event.getGuild().getId(), starboardmsg.getId()); + + event.getTextChannel().retrieveMessageById(event.getMessageId()).queue( + msg -> { + Integer stars = 0; + for (MessageReaction reaction : msg.getReactions()) { + if (reaction.getReactionEmote().getName().equals("⭐")) { + stars = reaction.getCount(); + } } - ); - }); + + if (Integer.parseInt(rethink.getNeededstars(event.getGuild().getId())) <= stars) { + event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) + .sendMessage(new MessageBuilder() + .setContent("⭐ 1" + " " + event.getTextChannel().getAsMention()) + .setEmbed( + new EmbedBuilder() + .setAuthor(msg.getAuthor().getAsTag()) + .setDescription(msg.getContentRaw()) + .setTimestamp(msg.getTimeCreated()).build()).build()).queue( + starboardmsg -> { + rethink.insertStarboardMessage(msg.getId(), event.getGuild().getId(), starboardmsg.getId()); + } + ); + } + } + ); + } } else { - event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) - .retrieveMessageById(rethink.getStarboardMessage(event.getMessageId())).queue( + + event.getTextChannel().retrieveMessageById(event.getMessageId()).queue( msg -> { - msg.editMessage(new MessageBuilder() - .setContent("⭐" + event.getReaction().getCount() + " " + event.getTextChannel().getAsMention()) - .setEmbed( - new EmbedBuilder() - .setAuthor(event.getUser().getAsTag()) - .setDescription(msg.getContentRaw()) - .setTimestamp(msg.getTimeCreated()).build()).build()).queue(); + Integer stars = 0; + for (MessageReaction reaction : msg.getReactions()) { + if (reaction.getReactionEmote().getName().equals("⭐")) { + stars = reaction.getCount(); + } + } + + Integer finalStars = stars; + event.getGuild().getTextChannelById(rethink.getStarboardChannel(event.getGuild().getId())) + .retrieveMessageById(rethink.getStarboardMessage(event.getMessageId())).queue( + msg2 -> { + + if (Integer.parseInt(rethink.getNeededstars(event.getGuild().getId())) <= finalStars) { + msg2.editMessage(new MessageBuilder() + .setContent("⭐ " + finalStars + " " + event.getTextChannel().getAsMention()) + .setEmbed( + new EmbedBuilder() + .setAuthor(msg.getAuthor().getAsTag()) + .setDescription(msg.getContentRaw()) + .setTimestamp(msg.getTimeCreated()).build()).build()).queue(); + } else { + msg2.delete().queue(); + rethink.removeStarboardMessage(msg.getId()); + } + } + ); + } ); + } } }