[AB-xxx] adding modmail thread reminders and auto closing

fixing sending cv2 components to interactions
fixing error handling for message embeds
This commit is contained in:
Sheldan
2026-04-24 18:23:07 +02:00
parent d8bb4a365d
commit 7627ee72e6
29 changed files with 985 additions and 61 deletions

View File

@@ -12,6 +12,7 @@ import dev.sheldan.abstracto.core.service.MessageCache;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
import dev.sheldan.abstracto.linkembed.config.LinkEmbedFeatureDefinition;
import dev.sheldan.abstracto.linkembed.service.MessageEmbedService;
import java.util.concurrent.CompletableFuture;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
@@ -46,13 +47,27 @@ public class MessageEmbedContextCommandListener implements MessageContextCommand
Message targetMessage = event.getInteraction().getTarget();
Member actor = model.getEvent().getMember();
Long messageId = targetMessage.getIdLong();
messageCache.getMessageFromCache(targetMessage)
.thenAccept(cachedMessage -> self.embedMessage(model, actor, cachedMessage));
.thenCompose(cachedMessage -> {
try {
return self.embedMessage(model, actor, cachedMessage);
} catch (Exception ex) {
return CompletableFuture.failedFuture(ex);
}
})
.thenAccept(unused -> {
log.info("Finished embedding message {}.", messageId);
})
.exceptionally(throwable -> {
log.error("Failed to embed message {}.", messageId, throwable);
return null;
});
return DefaultListenerResult.PROCESSED;
}
@Transactional
public void embedMessage(MessageContextInteractionModel model, Member actor, CachedMessage cachedMessage) {
public CompletableFuture<Void> embedMessage(MessageContextInteractionModel model, Member actor, CachedMessage cachedMessage) {
Long userEmbeddingUserInServerId = userInServerManagementService.loadOrCreateUser(actor).getUserInServerId();
GuildMemberMessageChannel context = GuildMemberMessageChannel
.builder()
@@ -61,7 +76,7 @@ public class MessageEmbedContextCommandListener implements MessageContextCommand
.member(actor)
.guildChannel(model.getEvent().getGuildChannel())
.build();
messageEmbedService.embedLink(cachedMessage, model.getEvent().getGuildChannel(), userEmbeddingUserInServerId, context, model.getEvent().getInteraction());
return messageEmbedService.embedLink(cachedMessage, model.getEvent().getGuildChannel(), userEmbeddingUserInServerId, context, model.getEvent().getInteraction());
}
@Override