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) {
}
}
Aggregations