use of com.sx4.bot.events.mod.UnmuteEvent in project Sx4 by sx4-discord-bot.
the class MuteManager method removeMuteBulk.
public DeleteOneModel<Document> removeMuteBulk(long guildId, long userId, long roleId) {
Guild guild = this.bot.getShardManager().getGuildById(guildId);
if (guild == null) {
return null;
}
Member member = guild.getMemberById(userId);
Role role = guild.getRoleById(roleId);
if (member != null && role != null && member.getRoles().contains(role) && guild.getSelfMember().hasPermission(Permission.MANAGE_ROLES) && guild.getSelfMember().canInteract(role)) {
guild.removeRoleFromMember(member, role).reason("Mute length served").queue();
}
Reason reason = new Reason("Mute length served");
UnmuteEvent event = new UnmuteEvent(guild.getSelfMember(), member == null ? UserReference.fromId(userId) : member.getUser(), reason);
this.bot.getModActionManager().onModAction(event);
this.deleteExecutor(guildId, userId);
return new DeleteOneModel<>(Filters.and(Filters.eq("guildId", guildId), Filters.eq("userId", userId)));
}
use of com.sx4.bot.events.mod.UnmuteEvent in project Sx4 by sx4-discord-bot.
the class UnmuteCommand method onCommand.
public void onCommand(Sx4CommandEvent event, @Argument(value = "user") Member member, @Argument(value = "reason", endless = true, nullDefault = true) Reason reason) {
long roleId = event.getMongo().getGuildById(event.getGuild().getIdLong(), Projections.include("mute.roleId")).getEmbedded(List.of("mute", "roleId"), 0L);
Role role = roleId == 0L ? null : event.getGuild().getRoleById(roleId);
if (role == null || !member.getRoles().contains(role)) {
event.replyFailure("That user is not muted").queue();
return;
}
if (!event.getSelfMember().canInteract(role)) {
event.replyFailure("I am unable to unmute that user as the mute role is higher or equal than my top role").queue();
return;
}
event.getMongo().deleteMute(Filters.and(Filters.eq("userId", member.getIdLong()), Filters.eq("guildId", event.getGuild().getIdLong()))).whenComplete((result, exception) -> {
if (ExceptionUtility.sendExceptionally(event, exception)) {
return;
}
event.getGuild().removeRoleFromMember(member, role).reason(ModUtility.getAuditReason(reason, event.getAuthor())).queue($ -> {
event.replySuccess("**" + member.getUser().getAsTag() + "** has been unmuted").queue();
event.getBot().getMuteManager().deleteExecutor(event.getGuild().getIdLong(), member.getIdLong());
event.getBot().getModActionManager().onModAction(new UnmuteEvent(event.getMember(), member.getUser(), reason));
});
});
}
Aggregations