mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-05 09:00:24 +00:00
[AB-294] fixing unmuting not cached members
adding logging and catches for unbanned listener
This commit is contained in:
@@ -42,28 +42,36 @@ 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 -> {
|
||||||
if(auditLogEntries.isEmpty()) {
|
try {
|
||||||
log.info("Did not find recent bans in guild {}.", model.getServerId());
|
if(auditLogEntries.isEmpty()) {
|
||||||
return;
|
log.info("Did not find recent bans in guild {}.", model.getServerId());
|
||||||
}
|
return;
|
||||||
Optional<AuditLogEntry> banEntryOptional = auditLogEntries
|
|
||||||
.stream()
|
|
||||||
.filter(auditLogEntry -> auditLogEntry.getTargetIdLong() == model.getUnbannedUser().getUserId())
|
|
||||||
.findFirst();
|
|
||||||
if(banEntryOptional.isPresent()) {
|
|
||||||
AuditLogEntry auditLogEntry = banEntryOptional.get();
|
|
||||||
if(!model.getGuild().getJDA().getSelfUser().equals(auditLogEntry.getUser())) {
|
|
||||||
self.sendUnBannedNotification(model.getUser(), auditLogEntry.getUser(), model.getServerId());
|
|
||||||
}
|
}
|
||||||
} else {
|
Optional<AuditLogEntry> banEntryOptional = auditLogEntries
|
||||||
log.info("Did not find the un-banned user in the most recent un-bans for guild {}. Not adding audit log information.", model.getServerId());
|
.stream()
|
||||||
self.sendUnBannedNotification(model.getUser(), null, model.getServerId());
|
.filter(auditLogEntry -> auditLogEntry.getTargetIdLong() == model.getUnbannedUser().getUserId())
|
||||||
|
.findFirst();
|
||||||
|
if(banEntryOptional.isPresent()) {
|
||||||
|
AuditLogEntry auditLogEntry = banEntryOptional.get();
|
||||||
|
if(!model.getGuild().getJDA().getSelfUser().equals(auditLogEntry.getUser())) {
|
||||||
|
self.sendUnBannedNotification(model.getUser(), auditLogEntry.getUser(), model.getServerId());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
} 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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user