[AB-11] fixing still considering bots when calculating the star amount

fixes #11
This commit is contained in:
Sheldan
2022-06-21 00:15:47 +02:00
parent 74cee39f1a
commit 1a1fde0800
18 changed files with 88 additions and 17 deletions

View File

@@ -299,7 +299,12 @@ public class InviteLinkFilterServiceBean implements InviteLinkFilterService {
list.getMainFuture().whenComplete((unused, throwable) -> { list.getMainFuture().whenComplete((unused, throwable) -> {
List<Invite> invites = list.getObjects(); List<Invite> invites = list.getObjects();
Long serverId = message.getGuild().getIdLong(); Long serverId = message.getGuild().getIdLong();
ServerUser author = ServerUser.builder().userId(message.getAuthor().getIdLong()).serverId(message.getGuild().getIdLong()).build(); ServerUser author = ServerUser
.builder()
.userId(message.getAuthor().getIdLong())
.serverId(message.getGuild().getIdLong())
.isBot(message.getAuthor().isBot())
.build();
boolean toDelete = false; boolean toDelete = false;
Map<Long, String> targetServers = new HashMap<>(); Map<Long, String> targetServers = new HashMap<>();
List<InviteToDelete> deletedInvites = new ArrayList<>(); List<InviteToDelete> deletedInvites = new ArrayList<>();

View File

@@ -159,10 +159,15 @@ public abstract class StarboardListener {
} }
protected List<AUserInAServer> getUsersExcept(List<ServerUser> users, AUserInAServer author) { protected List<AUserInAServer> getUsersExcept(List<ServerUser> users, AUserInAServer author) {
return users.stream().filter(user -> !(user.getServerId().equals(author.getServerReference().getId()) && user.getUserId().equals(author.getUserReference().getId()))).map(serverUser -> { return users
Optional<AUserInAServer> aUserInAServer = userInServerManagementService.loadUserOptional(serverUser.getServerId(), serverUser.getUserId()); .stream()
return aUserInAServer.orElse(null); .filter(serverUser -> !serverUser.getIsBot())
}).filter(Objects::nonNull).collect(Collectors.toList()); .filter(user -> !(user.getServerId().equals(author.getServerReference().getId()) && user.getUserId().equals(author.getUserReference().getId())))
.map(serverUser -> {
Optional<AUserInAServer> aUserInAServer = userInServerManagementService.loadUserOptional(serverUser.getServerId(), serverUser.getUserId());
return aUserInAServer.orElse(null);
}).filter(Objects::nonNull)
.collect(Collectors.toList());
} }
@PostConstruct @PostConstruct

View File

@@ -33,7 +33,11 @@ public class StarboardPostCreatedListenerManager {
if(listeners == null || listeners.isEmpty()) { if(listeners == null || listeners.isEmpty()) {
return; return;
} }
ServerUser userReactingServerUser = ServerUser.builder().serverId(post.getServer().getId()).userId(userReactingId).build(); ServerUser userReactingServerUser = ServerUser
.builder()
.serverId(post.getServer().getId())
.userId(userReactingId)
.build();
StarboardPostCreatedModel model = createStarboardStatusModel(post, userReactingServerUser); StarboardPostCreatedModel model = createStarboardStatusModel(post, userReactingServerUser);
listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model, starboardCreatedExecutor)); listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model, starboardCreatedExecutor));
} }

View File

@@ -42,6 +42,7 @@ public class AsyncJoinListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return MemberJoinModel return MemberJoinModel
.builder() .builder()

View File

@@ -42,6 +42,7 @@ public class AsyncLeaveListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return MemberLeaveModel return MemberLeaveModel
.builder() .builder()

View File

@@ -87,7 +87,12 @@ public class AsyncReactionAddedListenerBean extends ListenerAdapter {
@Transactional @Transactional
public void callAddedListeners(MessageReactionAddEvent event, CachedMessage cachedMessage, CachedReactions reaction, Member member) { public void callAddedListeners(MessageReactionAddEvent event, CachedMessage cachedMessage, CachedReactions reaction, Member member) {
ServerUser serverUser = ServerUser.builder().serverId(event.getGuild().getIdLong()).userId(event.getUserIdLong()).build(); ServerUser serverUser = ServerUser
.builder()
.serverId(event.getGuild().getIdLong())
.userId(event.getUserIdLong())
.isBot(event.getUser() != null ? event.getUser().isBot() : null)
.build();
addReactionIfNotThere(cachedMessage, reaction, serverUser); addReactionIfNotThere(cachedMessage, reaction, serverUser);
ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member); ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member);
messageCache.putMessageInCache(cachedMessage); messageCache.putMessageInCache(cachedMessage);

View File

@@ -83,7 +83,12 @@ public class AsyncReactionRemovedListenerBean extends ListenerAdapter {
@Transactional @Transactional
public void callRemoveListeners(MessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReactions reaction) { public void callRemoveListeners(MessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReactions reaction) {
ServerUser serverUser = ServerUser.builder().serverId(cachedMessage.getServerId()).userId(event.getUserIdLong()).build(); ServerUser serverUser = ServerUser
.builder()
.serverId(cachedMessage.getServerId())
.userId(event.getUserIdLong())
.isBot(event.getUser() != null ? event.getUser().isBot() : null)
.build();
removeReactionIfThere(cachedMessage, reaction, serverUser); removeReactionIfThere(cachedMessage, reaction, serverUser);
ReactionRemovedModel model = getModel(event, cachedMessage, serverUser); ReactionRemovedModel model = getModel(event, cachedMessage, serverUser);
reactionRemovedListeners.forEach(asyncReactionRemovedListener -> listenerServiceBean.executeFeatureAwareListener(asyncReactionRemovedListener, model, reactionRemovedExecutor)); reactionRemovedListeners.forEach(asyncReactionRemovedListener -> listenerServiceBean.executeFeatureAwareListener(asyncReactionRemovedListener, model, reactionRemovedExecutor));

View File

@@ -39,6 +39,7 @@ public class AsyncUserBannedListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return UserBannedModel return UserBannedModel
.builder() .builder()

View File

@@ -39,6 +39,7 @@ public class AsyncUserUnBannedListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return UserUnBannedModel return UserUnBannedModel
.builder() .builder()

View File

@@ -50,6 +50,7 @@ public class JoinListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return MemberJoinModel return MemberJoinModel
.builder() .builder()

View File

@@ -46,6 +46,7 @@ public class LeaveListenerBean extends ListenerAdapter {
.builder() .builder()
.serverId(event.getGuild().getIdLong()) .serverId(event.getGuild().getIdLong())
.userId(event.getUser().getIdLong()) .userId(event.getUser().getIdLong())
.isBot(event.getUser().isBot())
.build(); .build();
return MemberLeaveModel return MemberLeaveModel
.builder() .builder()

View File

@@ -94,7 +94,12 @@ public class ReactionAddedListenerBean extends ListenerAdapter {
@Transactional @Transactional
public void callAddedListeners(@Nonnull MessageReactionAddEvent event, CachedMessage cachedMessage, CachedReactions reaction, Member member) { public void callAddedListeners(@Nonnull MessageReactionAddEvent event, CachedMessage cachedMessage, CachedReactions reaction, Member member) {
ServerUser serverUser = ServerUser.builder().serverId(cachedMessage.getServerId()).userId(event.getUserIdLong()).build(); ServerUser serverUser = ServerUser
.builder()
.serverId(cachedMessage.getServerId())
.userId(event.getUserIdLong())
.isBot(event.getUser() != null ? event.getUser().isBot() : null)
.build();
addReactionIfNotThere(cachedMessage, reaction, serverUser); addReactionIfNotThere(cachedMessage, reaction, serverUser);
ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member); ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member);
addedListenerList.forEach(reactedAddedListener -> listenerService.executeFeatureAwareListener(reactedAddedListener, model)); addedListenerList.forEach(reactedAddedListener -> listenerService.executeFeatureAwareListener(reactedAddedListener, model));

View File

@@ -87,7 +87,12 @@ public class ReactionRemovedListenerBean extends ListenerAdapter {
@Transactional @Transactional
public void callRemoveListeners(@Nonnull MessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReactions reaction) { public void callRemoveListeners(@Nonnull MessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReactions reaction) {
ServerUser serverUser = ServerUser.builder().serverId(event.getGuild().getIdLong()).userId(event.getUserIdLong()).build(); ServerUser serverUser = ServerUser
.builder()
.serverId(event.getGuild().getIdLong())
.userId(event.getUserIdLong())
.isBot(event.getUser() != null ? event.getUser().isBot() : null)
.build();
removeReactionIfThere(cachedMessage, reaction, serverUser); removeReactionIfThere(cachedMessage, reaction, serverUser);
ReactionRemovedModel model = getModel(event, cachedMessage, serverUser); ReactionRemovedModel model = getModel(event, cachedMessage, serverUser);
reactionRemovedListeners.forEach(reactionRemovedListener -> listenerService.executeFeatureAwareListener(reactionRemovedListener, model)); reactionRemovedListeners.forEach(reactionRemovedListener -> listenerService.executeFeatureAwareListener(reactionRemovedListener, model));

View File

@@ -172,7 +172,12 @@ public class CacheEntityServiceBean implements CacheEntityService {
users.forEachAsync(user -> { users.forEachAsync(user -> {
log.debug("Loading user {} for reaction.", user.getIdLong()); log.debug("Loading user {} for reaction.", user.getIdLong());
if(reaction.getGuild() != null) { if(reaction.getGuild() != null) {
aUsers.add(ServerUser.builder().userId(user.getIdLong()).serverId(reaction.getGuild().getIdLong()).build()); aUsers.add(ServerUser
.builder()
.userId(user.getIdLong())
.isBot(user.isBot())
.serverId(reaction.getGuild().getIdLong())
.build());
} }
return true; return true;
}).whenComplete((o, throwable) -> { }).whenComplete((o, throwable) -> {
@@ -223,7 +228,11 @@ public class CacheEntityServiceBean implements CacheEntityService {
allFutures.add(referencedMessageFuture); allFutures.add(referencedMessageFuture);
FutureUtils.toSingleFuture(allFutures).thenAccept(aVoid -> FutureUtils.toSingleFuture(allFutures).thenAccept(aVoid ->
{ {
CachedAuthor cachedAuthor = CachedAuthor.builder().authorId(message.getAuthor().getIdLong()).isBot(message.getAuthor().isBot()).build(); CachedAuthor cachedAuthor = CachedAuthor
.builder()
.authorId(message.getAuthor().getIdLong())
.isBot(message.getAuthor().isBot())
.build();
CachedMessage.CachedMessageBuilder builder = CachedMessage.builder() CachedMessage.CachedMessageBuilder builder = CachedMessage.builder()
.author(cachedAuthor) .author(cachedAuthor)
.messageId(message.getIdLong()) .messageId(message.getIdLong())
@@ -271,7 +280,10 @@ public class CacheEntityServiceBean implements CacheEntityService {
} }
private List<CachedReactions> convertReactionFuturesToCachedReactions(List<CompletableFuture<CachedReactions>> futures) { private List<CachedReactions> convertReactionFuturesToCachedReactions(List<CompletableFuture<CachedReactions>> futures) {
return futures.stream().map(CompletableFuture::join).collect(Collectors.toList()); return futures
.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList());
} }
} }

View File

@@ -120,7 +120,11 @@ public class EmoteServiceBean implements EmoteService {
@Override @Override
public Optional<CachedReactions> getReactionFromMessageByEmote(CachedMessage message, AEmote emote) { public Optional<CachedReactions> getReactionFromMessageByEmote(CachedMessage message, AEmote emote) {
return message.getReactions().stream().filter(reaction -> compareCachedEmoteWithAEmote(reaction.getEmote(), emote)).findFirst(); return message
.getReactions()
.stream()
.filter(reaction -> compareCachedEmoteWithAEmote(reaction.getEmote(), emote))
.findFirst();
} }
@Override @Override

View File

@@ -16,6 +16,7 @@ import java.io.Serializable;
public class ServerUser implements Serializable { public class ServerUser implements Serializable {
private Long serverId; private Long serverId;
private Long userId; private Long userId;
private Boolean isBot;
public static ServerUser fromAUserInAServer(AUserInAServer aUserInAServer) { public static ServerUser fromAUserInAServer(AUserInAServer aUserInAServer) {
return ServerUser return ServerUser
@@ -29,6 +30,7 @@ public class ServerUser implements Serializable {
.builder() .builder()
.serverId(member.getGuild().getIdLong()) .serverId(member.getGuild().getIdLong())
.userId(member.getIdLong()) .userId(member.getIdLong())
.isBot(member.getUser().isBot())
.build(); .build();
} }
} }

View File

@@ -31,6 +31,10 @@ public class CachedMessage implements Serializable {
} }
public ServerUser getAuthorAsServerUser() { public ServerUser getAuthorAsServerUser() {
return ServerUser.builder().serverId(serverId).userId(author.getAuthorId()).build(); return ServerUser
.builder()
.serverId(serverId)
.userId(author.getAuthorId())
.build();
} }
} }

View File

@@ -18,7 +18,16 @@ public class CachedReactions implements Serializable {
private List<ServerUser> users; private List<ServerUser> users;
public CachedReaction getReactionForSpecificUser(ServerUser serverUser) { public CachedReaction getReactionForSpecificUser(ServerUser serverUser) {
ServerUser matchingUser = users.stream().filter(serverUser1 -> serverUser1.equals(serverUser)).findAny().orElseThrow(() -> new AbstractoRunTimeException("Server user not found.")); ServerUser matchingUser = users
return CachedReaction.builder().self(self).emote(emote).user(matchingUser).build(); .stream()
.filter(serverUser1 -> serverUser1.equals(serverUser))
.findAny()
.orElseThrow(() -> new AbstractoRunTimeException("Server user not found."));
return CachedReaction
.builder()
.self(self)
.emote(emote)
.user(matchingUser)
.build();
} }
} }