diff --git a/src/main/java/com/jagrosh/vortex/Vortex.java b/src/main/java/com/jagrosh/vortex/Vortex.java index 946b089..3509069 100644 --- a/src/main/java/com/jagrosh/vortex/Vortex.java +++ b/src/main/java/com/jagrosh/vortex/Vortex.java @@ -171,7 +171,7 @@ if(event.isFromType(ChannelType.TEXT)) try { - event.getMessage().addReaction(Constants.HELP_REACTION).queue(); + event.getMessage().addReaction(Constants.HELP_REACTION).queue(s->{}, f->{}); } catch(PermissionException ex) {} }, t -> event.replyWarning("Help cannot be sent because you are blocking Direct Messages."))) //.setDiscordBotsKey(tokens.get(1)) diff --git a/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java b/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java index 52543f1..1dc23cb 100644 --- a/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java +++ b/src/main/java/com/jagrosh/vortex/automod/StrikeHandler.java @@ -27,6 +27,7 @@ import java.time.temporal.ChronoUnit; import java.util.List; import java.util.concurrent.TimeUnit; +import net.dv8tion.jda.core.Permission; import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.entities.Role; @@ -83,7 +84,8 @@ else { String notimeaudit = LogUtil.auditStrikeReasonFormat(moderator, 0, counts[0], counts[1], reason); - if(punishments.stream().anyMatch(p -> p.action==Action.BAN)) + boolean canBan = moderator.getGuild().getSelfMember().hasPermission(Permission.BAN_MEMBERS); + if(punishments.stream().anyMatch(p -> p.action==Action.BAN) && canBan) { OtherUtil.safeDM(target, dmmsg + punish(Action.BAN, moderator.getGuild()), shouldDM, () -> moderator.getGuild().getController().ban(target, 7, notimeaudit).queue()); @@ -101,7 +103,7 @@ else if(p.action==Action.TEMPBAN && p.time>banDuration) banDuration = p.time; } - if(banDuration>0) + if(banDuration>0 && canBan) { int finalBanDuration = banDuration; OtherUtil.safeDM(target, dmmsg + punishTime(Action.TEMPBAN, moderator.getGuild(), banDuration), shouldDM, @@ -111,7 +113,7 @@ vortex.getDatabase().tempmutes.setMute(moderator.getGuild(), target.getIdLong(), muteTime(now, muteDuration)); return; } - if(punishments.stream().anyMatch(p -> p.action==Action.SOFTBAN)) + if(punishments.stream().anyMatch(p -> p.action==Action.SOFTBAN) && canBan) { OtherUtil.safeDM(target, dmmsg + punish(Action.SOFTBAN, moderator.getGuild()), shouldDM, () -> moderator.getGuild().getController().ban(target, 7, notimeaudit).queue( @@ -120,7 +122,8 @@ vortex.getDatabase().tempmutes.setMute(moderator.getGuild(), target.getIdLong(), muteTime(now, muteDuration)); return; } - if(punishments.stream().anyMatch(p -> p.action==Action.KICK)) + boolean canKick = moderator.getGuild().getSelfMember().hasPermission(Permission.KICK_MEMBERS); + if(punishments.stream().anyMatch(p -> p.action==Action.KICK) && canKick) { if(moderator.getGuild().isMember(target)) { @@ -135,7 +138,8 @@ vortex.getDatabase().tempmutes.setMute(moderator.getGuild(), target.getIdLong(), muteTime(now, muteDuration)); return; } - if(muteDuration>0) + boolean canMute = moderator.getGuild().getSelfMember().hasPermission(Permission.MANAGE_ROLES); + if(muteDuration>0 && canMute) { vortex.getDatabase().tempmutes.setMute(moderator.getGuild(), target.getIdLong(), muteTime(now, muteDuration)); Role muted = vortex.getDatabase().settings.getSettings(moderator.getGuild()).getMutedRole(moderator.getGuild());