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 21c6e4e33..51a385d2c 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 @@ -26,9 +26,11 @@ import dev.sheldan.abstracto.linkembed.service.management.MessageEmbedPostManage import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.interactions.commands.CommandInteraction; import org.apache.commons.lang3.tuple.Pair; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -191,11 +193,20 @@ public class MessageEmbedServiceBean implements MessageEmbedService { .builder() .message(embeddedMessage) .build(); - MessageToSend messageToSend = - templateService.renderEmbedTemplate(MESSAGE_EMBED_CLEANUP_REPLACEMENT_TEMPLATE, model, embeddingMessage.getServerId()); - return channelService.editMessageInAChannelFuture(messageToSend, embeddingMessage.getServerId(), embeddingMessage.getChannelId(), - embeddingMessage.getMessageId()); - }).toList(); + Optional existingChannel = + channelService.getGuildChannelFromServerOptional(embeddingMessage.getServerId(), embeddingMessage.getChannelId()); + // if the channel doesnt exist, we dont need to cleanup + if(existingChannel.isPresent()) { + MessageToSend messageToSend = + templateService.renderEmbedTemplate(MESSAGE_EMBED_CLEANUP_REPLACEMENT_TEMPLATE, model, embeddingMessage.getServerId()); + return channelService.editMessageInAChannelFuture(messageToSend, embeddingMessage.getServerId(), embeddingMessage.getChannelId(), + embeddingMessage.getMessageId()); + } else { + return null; + } + }) + .filter(Objects::nonNull) + .toList(); return FutureUtils.toSingleFutureGeneric(editList).whenComplete((unused, throwable) -> { if(throwable != null) { log.warn("Failed to cleanup embedded messages..", throwable); diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModmailReminderListener.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModmailReminderListener.java index 28ba4f947..b6986a7a0 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModmailReminderListener.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/listener/ModmailReminderListener.java @@ -75,7 +75,7 @@ public class ModmailReminderListener implements ModmailThreadActionListener { log.debug("Thread {} is closed - ignoring.", model.getThreadId()); return ModmailThreadActionListenerResult.IGNORED; } - Instant timeStampToConsider = getTimestampToUse(thread); + Instant timeStampToConsider = getTimestampToUse(thread, duration); boolean mustBeReminded = timeInPastDuration.isAfter(timeStampToConsider); if (mustBeReminded) { sendReminder(thread) @@ -97,9 +97,9 @@ public class ModmailReminderListener implements ModmailThreadActionListener { } - private static Instant getTimestampToUse(ModMailThread thread) { + private static Instant getTimestampToUse(ModMailThread thread, Duration configuredDuration) { if (thread.getRemindersSnoozedUntil() != null) { - return thread.getRemindersSnoozedUntil(); + return thread.getRemindersSnoozedUntil().minus(configuredDuration); } return getUpdatedOrCrated(thread); }