From 68817391a1d328ae9379180f88b7f2f1d3e63baa Mon Sep 17 00:00:00 2001 From: danthe1st Date: Sat, 20 Jan 2024 19:08:33 +0100 Subject: [PATCH] preserve attachments of logged messages via HTTP request --- .../data/h2db/message_cache/MessageCache.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java index 318615a32..b3a75da55 100644 --- a/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java +++ b/src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java @@ -20,6 +20,10 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse.BodyHandlers; import java.nio.charset.StandardCharsets; import java.time.Instant; import java.time.ZoneOffset; @@ -137,9 +141,23 @@ public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedM action.addFiles(FileUpload.fromData(buildDeletedMessageFile(author, message), message.getMessageId() + ".txt")); } action.queue(); + requestMessageAttachments(message); }); } + /** + * Requests each attachment from Discord's CDN. + * This is done in order to prevent Discord from deleting the attachment too quickly. + * @param message the cached message + */ + private void requestMessageAttachments(CachedMessage message) { + HttpClient client = HttpClient.newHttpClient(); + for (String attachment : message.getAttachments()) { + HttpRequest request = HttpRequest.newBuilder(URI.create(attachment)).build(); + client.sendAsync(request, BodyHandlers.discarding()); + } + } + private EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage before) { long epoch = IdCalculatorCommand.getTimestampFromId(before.getMessageId()) / 1000; return new EmbedBuilder()