Search in sources :

Example 1 with Pair

use of net.kodehawa.mantarobot.utils.Pair in project MantaroBot by Mantaro.

the class MuteTask method handle.

public static void handle() {
    try {
        MantaroObj data = MantaroData.db().getMantaroData();
        Map<Long, Pair<String, Long>> mutes = data.getMutes();
        log.debug("Checking mutes... data size {}", mutes.size());
        for (var entry : mutes.entrySet()) {
            try {
                log.trace("Iteration: Mute check");
                var id = entry.getKey();
                var pair = entry.getValue();
                var guildId = pair.getLeft();
                var maxTime = pair.getRight();
                var guild = MantaroBot.getInstance().getShardManager().getGuildById(guildId);
                if (guild == null) {
                    // Might be in another instance, or the guild left, either way we can't check properly.
                    continue;
                }
                var dbGuild = MantaroData.db().getGuild(guildId);
                var guildData = dbGuild.getData();
                // Please hold me.
                if (guild.getRoleById(guildData.getMutedRole()) == null) {
                    data.getMutes().remove(id);
                    data.saveAsync();
                    log.debug("Removed {} because role == null", id);
                } else {
                    if (System.currentTimeMillis() > maxTime) {
                        log.debug("Unmuted {} because time ran out", id);
                        data.getMutes().remove(id);
                        data.save();
                        var roleById = guild.getRoleById(guildData.getMutedRole());
                        Member member = null;
                        try {
                            member = guild.retrieveMemberById(id, false).complete();
                        } catch (Exception ignored) {
                        }
                        if (member == null) {
                            data.getMutes().remove(id);
                            data.saveAsync();
                            log.debug("Removed {} because member == null", id);
                            continue;
                        }
                        if (roleById != null) {
                            guild.removeRoleFromMember(member, roleById).queue();
                        }
                        guildData.setCases(guildData.getCases() + 1);
                        dbGuild.saveAsync();
                        ModLog.log(guild.getSelfMember(), member.getUser(), "Mute timeout expired", "none", ModLog.ModAction.UNMUTE, guildData.getCases());
                    }
                }
            } catch (Exception ignored) {
            }
        }
    } catch (Exception ignored) {
    }
}
Also used : MantaroObj(net.kodehawa.mantarobot.db.entities.MantaroObj) Member(net.dv8tion.jda.api.entities.Member) Pair(net.kodehawa.mantarobot.utils.Pair)

Aggregations

Member (net.dv8tion.jda.api.entities.Member)1 MantaroObj (net.kodehawa.mantarobot.db.entities.MantaroObj)1 Pair (net.kodehawa.mantarobot.utils.Pair)1