Search in sources :

Example 1 with UnmuteEvent

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)));
}
Also used : Role(net.dv8tion.jda.api.entities.Role) UnmuteEvent(com.sx4.bot.events.mod.UnmuteEvent) Guild(net.dv8tion.jda.api.entities.Guild) Member(net.dv8tion.jda.api.entities.Member) DeleteOneModel(com.mongodb.client.model.DeleteOneModel) Reason(com.sx4.bot.entities.mod.Reason)

Example 2 with UnmuteEvent

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));
        });
    });
}
Also used : Role(net.dv8tion.jda.api.entities.Role) UnmuteEvent(com.sx4.bot.events.mod.UnmuteEvent)

Aggregations

UnmuteEvent (com.sx4.bot.events.mod.UnmuteEvent)2 Role (net.dv8tion.jda.api.entities.Role)2 DeleteOneModel (com.mongodb.client.model.DeleteOneModel)1 Reason (com.sx4.bot.entities.mod.Reason)1 Guild (net.dv8tion.jda.api.entities.Guild)1 Member (net.dv8tion.jda.api.entities.Member)1