[AB-294] fixing unmuting not cached members

adding logging and catches for unbanned listener
This commit is contained in:
Sheldan
2021-06-21 21:47:23 +02:00
parent d5f572262f
commit 0d25b9c384
2 changed files with 30 additions and 24 deletions

View File

@@ -42,11 +42,13 @@ public class UserUnBannedListener implements AsyncUserUnBannedListener {
@Override @Override
public DefaultListenerResult execute(UserUnBannedModel model) { public DefaultListenerResult execute(UserUnBannedModel model) {
log.info("Notifying about unban of user {} in guild {}.", model.getUnbannedUser().getUserId(), model.getServerId());
model.getGuild() model.getGuild()
.retrieveAuditLogs() .retrieveAuditLogs()
.type(ActionType.UNBAN) .type(ActionType.UNBAN)
.limit(5) .limit(5)
.queue(auditLogEntries -> { .queue(auditLogEntries -> {
try {
if(auditLogEntries.isEmpty()) { if(auditLogEntries.isEmpty()) {
log.info("Did not find recent bans in guild {}.", model.getServerId()); log.info("Did not find recent bans in guild {}.", model.getServerId());
return; return;
@@ -64,6 +66,12 @@ public class UserUnBannedListener implements AsyncUserUnBannedListener {
log.info("Did not find the un-banned user in the most recent un-bans for guild {}. Not adding audit log information.", model.getServerId()); log.info("Did not find the un-banned user in the most recent un-bans for guild {}. Not adding audit log information.", model.getServerId());
self.sendUnBannedNotification(model.getUser(), null, model.getServerId()); self.sendUnBannedNotification(model.getUser(), null, model.getServerId());
} }
} catch (Exception exception) {
log.error("Failed to properly send un ban log with error.", exception);
}
}, throwable -> {
log.error("Failed to retrieve audit log entries for unban log.", throwable);
self.sendUnBannedNotification(model.getUser(), null, model.getServerId());
}); });
return DefaultListenerResult.PROCESSED; return DefaultListenerResult.PROCESSED;
} }

View File

@@ -294,19 +294,13 @@ public class MuteServiceBean implements MuteService {
return CompletableFuture.completedFuture(null); return CompletableFuture.completedFuture(null);
} }
Long muteId = mute.getMuteId().getId(); Long muteId = mute.getMuteId().getId();
Long serverId = mute.getMuteId().getServerId();
AServer mutingServer = mute.getServer(); AServer mutingServer = mute.getServer();
log.info("UnMuting {} in server {}", mute.getMutedUser().getUserReference().getId(), mutingServer.getId()); log.info("UnMuting {} in server {}", mute.getMutedUser().getUserReference().getId(), mutingServer.getId());
MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer); MuteRole muteRole = muteRoleManagementService.retrieveMuteRoleForServer(mutingServer);
log.debug("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId()); log.debug("Using the mute role {} mapping to role {}", muteRole.getId(), muteRole.getRole().getId());
Guild guild = guildService.getGuildById(mutingServer.getId()); Guild guild = guildService.getGuildById(mutingServer.getId());
CompletableFuture<Void> roleRemovalFuture; CompletableFuture<Void> roleRemovalFuture = roleService.removeRoleFromUserFuture(mute.getMutedUser(), muteRole.getRole());
// TODO replace with future, because caching
if(memberService.isUserInGuild(guild, mute.getMutedUser())) {
roleRemovalFuture = roleService.removeRoleFromUserFuture(mute.getMutedUser(), muteRole.getRole());
} else {
roleRemovalFuture = CompletableFuture.completedFuture(null);
log.info("User to unMute left the guild.");
}
CompletableFuture<Member> mutingMemberFuture = memberService.getMemberInServerAsync(mute.getMutingUser()); CompletableFuture<Member> mutingMemberFuture = memberService.getMemberInServerAsync(mute.getMutingUser());
CompletableFuture<Member> mutedMemberFuture = memberService.getMemberInServerAsync(mute.getMutedUser()); CompletableFuture<Member> mutedMemberFuture = memberService.getMemberInServerAsync(mute.getMutedUser());
CompletableFuture<Void> finalFuture = new CompletableFuture<>(); CompletableFuture<Void> finalFuture = new CompletableFuture<>();
@@ -314,7 +308,11 @@ public class MuteServiceBean implements MuteService {
if(sendNotification) { if(sendNotification) {
self.sendUnmuteLog(muteId, guild, mutingMemberFuture, mutedMemberFuture).thenAccept(aVoid1 -> self.sendUnmuteLog(muteId, guild, mutingMemberFuture, mutedMemberFuture).thenAccept(aVoid1 ->
finalFuture.complete(null) finalFuture.complete(null)
); ).exceptionally(throwable1 -> {
log.error("Unmute log failed to send for mute {} in server {}.", muteId, serverId, throwable1);
finalFuture.complete(null);
return null;
});
} else { } else {
finalFuture.complete(null); finalFuture.complete(null);
} }