diff --git a/src/main/java/com/bbn/hadder/listener/RulesListener.java b/src/main/java/com/bbn/hadder/listener/RulesListener.java index d71d1d4..55f3ef6 100644 --- a/src/main/java/com/bbn/hadder/listener/RulesListener.java +++ b/src/main/java/com/bbn/hadder/listener/RulesListener.java @@ -22,7 +22,7 @@ public class RulesListener extends ListenerAdapter { if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) { if (event.getReactionEmote().isEmote()) { if (rethink.getRulesAEmote(event.getGuild().getId()).equals(event.getReactionEmote().getId())) { - event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); + addRole(event); } else if (rethink.getRulesDEmote(event.getGuild().getId()).equals(event.getReactionEmote().getId())) { event.getReaction().removeReaction(event.getUser()).queue(); if (event.getGuild().getSelfMember().canInteract(event.getMember())) { @@ -31,7 +31,7 @@ public class RulesListener extends ListenerAdapter { } } else if (event.getReactionEmote().isEmoji()) { if (rethink.getRulesAEmote(event.getGuild().getId()).equals(event.getReactionEmote().getEmoji())) { - event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); + addRole(event); } else if (rethink.getRulesDEmote(event.getGuild().getId()).equals(event.getReactionEmote().getEmoji())) { event.getReaction().removeReaction(event.getUser()).queue(); if (event.getGuild().getSelfMember().canInteract(event.getMember())) { @@ -42,6 +42,12 @@ public class RulesListener extends ListenerAdapter { } } + private void addRole(MessageReactionAddEvent event) { + if (event.getMember().getRoles().contains(event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId())))) { + event.getGuild().removeRoleFromMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); + } else event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(rethink.getRulesRID(event.getGuild().getId()))).reason("Accepted rules").queue(); + } + @Override public void onMessageReactionRemove(MessageReactionRemoveEvent event) { if (event.getMessageId().equals(rethink.getRulesMID(event.getGuild().getId())) && !event.getMember().getUser().isBot()) { diff --git a/src/main/resources/Translations/Translations_en.properties b/src/main/resources/Translations/Translations_en.properties index 1d409f1..e7dee3e 100644 --- a/src/main/resources/Translations/Translations_en.properties +++ b/src/main/resources/Translations/Translations_en.properties @@ -132,8 +132,8 @@ commands.moderation.rules.channel.error.title = Channel not found commands.moderation.rules.channel.error.description = I can't find the specified channel. Please start the setup again. commands.moderation.rules.rules.title = Rules message commands.moderation.rules.rules.description = The channel was successfully set to %extra%. Please send me the rules now. -commands.moderation.rules.role.title = Role to assign -commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives after he accepted the rules. +commands.moderation.rules.role.title = Role to assign/remove +commands.moderation.rules.role.description = The rules were successfully set. Please send me the name of the role which the user receives/loses after he accepted the rules. commands.moderation.rules.role.error.title = Role does not exist commands.moderation.rules.role.error.description = The specified role does not exist on this guild. commands.moderation.rules.role.permission.error.title = No permission