[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<Invite> invites = list.getObjects();
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;
Map<Long, String> targetServers = new HashMap<>();
List<InviteToDelete> deletedInvites = new ArrayList<>();

View File

@@ -159,10 +159,15 @@ public abstract class StarboardListener {
}
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 -> {
Optional<AUserInAServer> aUserInAServer = userInServerManagementService.loadUserOptional(serverUser.getServerId(), serverUser.getUserId());
return aUserInAServer.orElse(null);
}).filter(Objects::nonNull).collect(Collectors.toList());
return users
.stream()
.filter(serverUser -> !serverUser.getIsBot())
.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

View File

@@ -33,7 +33,11 @@ public class StarboardPostCreatedListenerManager {
if(listeners == null || listeners.isEmpty()) {
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);
listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model, starboardCreatedExecutor));
}

View File

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

View File

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

View File

@@ -87,7 +87,12 @@ public class AsyncReactionAddedListenerBean extends ListenerAdapter {
@Transactional
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);
ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member);
messageCache.putMessageInCache(cachedMessage);

View File

@@ -83,7 +83,12 @@ public class AsyncReactionRemovedListenerBean extends ListenerAdapter {
@Transactional
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);
ReactionRemovedModel model = getModel(event, cachedMessage, serverUser);
reactionRemovedListeners.forEach(asyncReactionRemovedListener -> listenerServiceBean.executeFeatureAwareListener(asyncReactionRemovedListener, model, reactionRemovedExecutor));

View File

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

View File

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

View File

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

View File

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

View File

@@ -94,7 +94,12 @@ public class ReactionAddedListenerBean extends ListenerAdapter {
@Transactional
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);
ReactionAddedModel model = getModel(event, cachedMessage, serverUser, member);
addedListenerList.forEach(reactedAddedListener -> listenerService.executeFeatureAwareListener(reactedAddedListener, model));

View File

@@ -87,7 +87,12 @@ public class ReactionRemovedListenerBean extends ListenerAdapter {
@Transactional
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);
ReactionRemovedModel model = getModel(event, cachedMessage, serverUser);
reactionRemovedListeners.forEach(reactionRemovedListener -> listenerService.executeFeatureAwareListener(reactionRemovedListener, model));

View File

@@ -172,7 +172,12 @@ public class CacheEntityServiceBean implements CacheEntityService {
users.forEachAsync(user -> {
log.debug("Loading user {} for reaction.", user.getIdLong());
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;
}).whenComplete((o, throwable) -> {
@@ -223,7 +228,11 @@ public class CacheEntityServiceBean implements CacheEntityService {
allFutures.add(referencedMessageFuture);
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()
.author(cachedAuthor)
.messageId(message.getIdLong())
@@ -271,7 +280,10 @@ public class CacheEntityServiceBean implements CacheEntityService {
}
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
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

View File

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

View File

@@ -31,6 +31,10 @@ public class CachedMessage implements Serializable {
}
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;
public CachedReaction getReactionForSpecificUser(ServerUser serverUser) {
ServerUser matchingUser = users.stream().filter(serverUser1 -> serverUser1.equals(serverUser)).findAny().orElseThrow(() -> new AbstractoRunTimeException("Server user not found."));
return CachedReaction.builder().self(self).emote(emote).user(matchingUser).build();
ServerUser matchingUser = users
.stream()
.filter(serverUser1 -> serverUser1.equals(serverUser))
.findAny()
.orElseThrow(() -> new AbstractoRunTimeException("Server user not found."));
return CachedReaction
.builder()
.self(self)
.emote(emote)
.user(matchingUser)
.build();
}
}