diff --git a/abstracto-application/abstracto-modules/link-embed/link-embed-impl/src/main/java/dev/sheldan/abstracto/linkembed/service/MessageEmbedServiceBean.java b/abstracto-application/abstracto-modules/link-embed/link-embed-impl/src/main/java/dev/sheldan/abstracto/linkembed/service/MessageEmbedServiceBean.java index f45e43246..a8efb3ee4 100644 --- a/abstracto-application/abstracto-modules/link-embed/link-embed-impl/src/main/java/dev/sheldan/abstracto/linkembed/service/MessageEmbedServiceBean.java +++ b/abstracto-application/abstracto-modules/link-embed/link-embed-impl/src/main/java/dev/sheldan/abstracto/linkembed/service/MessageEmbedServiceBean.java @@ -137,7 +137,11 @@ public class MessageEmbedServiceBean implements MessageEmbedService { private CompletableFuture buildTemplateParameter(Message message, CachedMessage embeddedMessage) { return userService.retrieveUserForId(embeddedMessage.getAuthor().getAuthorId()).thenApply(authorUser -> self.loadMessageEmbedModel(message, embeddedMessage, authorUser) - ); + ).exceptionally(throwable -> { + log.warn("Failed to retrieve author for user {}.", embeddedMessage.getAuthor().getAuthorId(), throwable); + self.loadMessageEmbedModel(message, embeddedMessage, null); + return null; + }); } @Transactional diff --git a/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/service/StarboardServiceBean.java b/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/service/StarboardServiceBean.java index 3f7478efc..d8219b7ed 100644 --- a/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/service/StarboardServiceBean.java +++ b/abstracto-application/abstracto-modules/starboard/starboard-impl/src/main/java/dev/sheldan/abstracto/starboard/service/StarboardServiceBean.java @@ -147,23 +147,30 @@ public class StarboardServiceBean implements StarboardService { private CompletableFuture buildStarboardPostModel(CachedMessage message, Integer starCount) { - return userService.retrieveUserForId(message.getAuthor().getAuthorId()).thenApply(user -> { - Optional channel = channelService.getTextChannelFromServerOptional(message.getServerId(), message.getChannelId()); - Optional guild = guildService.getGuildByIdOptional(message.getServerId()); - String starLevelEmote = getAppropriateEmote(message.getServerId(), starCount); - return StarboardPostModel - .builder() - .message(message) - .author(user) - .sourceChannelId(message.getChannelId()) - .channel(channel.orElse(null)) - .starCount(starCount) - .guild(guild.orElse(null)) - .starLevelEmote(starLevelEmote) - .build(); + return userService.retrieveUserForId(message.getAuthor().getAuthorId()) + .thenApply(user -> createStarboardModel(message, starCount, user)) + .exceptionally(throwable -> { + log.warn("Failed to retrieve user for author {} of starboard post.", message.getAuthor().getAuthorId(), throwable); + return createStarboardModel(message, starCount, null); }); } + private StarboardPostModel createStarboardModel(CachedMessage message, Integer starCount, net.dv8tion.jda.api.entities.User user) { + Optional channel = channelService.getTextChannelFromServerOptional(message.getServerId(), message.getChannelId()); + Optional guild = guildService.getGuildByIdOptional(message.getServerId()); + String starLevelEmote = getAppropriateEmote(message.getServerId(), starCount); + return StarboardPostModel + .builder() + .message(message) + .author(user) + .sourceChannelId(message.getChannelId()) + .channel(channel.orElse(null)) + .starCount(starCount) + .guild(guild.orElse(null)) + .starLevelEmote(starLevelEmote) + .build(); + } + @Override public CompletableFuture updateStarboardPost(StarboardPost post, CachedMessage message, List userExceptAuthor) { int starCount = userExceptAuthor.size();