Skip to content

Commit ff3c570

Browse files
Merge pull request #477 from danthe1st/preserve-attachments
preserve attachments of logged messages via HTTP request
2 parents ca3aeed + 6881739 commit ff3c570

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020

2121
import java.io.ByteArrayInputStream;
2222
import java.io.InputStream;
23+
import java.net.URI;
24+
import java.net.http.HttpClient;
25+
import java.net.http.HttpRequest;
26+
import java.net.http.HttpResponse.BodyHandlers;
2327
import java.nio.charset.StandardCharsets;
2428
import java.time.Instant;
2529
import java.time.ZoneOffset;
@@ -137,9 +141,23 @@ public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedM
137141
action.addFiles(FileUpload.fromData(buildDeletedMessageFile(author, message), message.getMessageId() + ".txt"));
138142
}
139143
action.queue();
144+
requestMessageAttachments(message);
140145
});
141146
}
142147

148+
/**
149+
* Requests each attachment from Discord's CDN.
150+
* This is done in order to prevent Discord from deleting the attachment too quickly.
151+
* @param message the cached message
152+
*/
153+
private void requestMessageAttachments(CachedMessage message) {
154+
HttpClient client = HttpClient.newHttpClient();
155+
for (String attachment : message.getAttachments()) {
156+
HttpRequest request = HttpRequest.newBuilder(URI.create(attachment)).build();
157+
client.sendAsync(request, BodyHandlers.discarding());
158+
}
159+
}
160+
143161
private EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage before) {
144162
long epoch = IdCalculatorCommand.getTimestampFromId(before.getMessageId()) / 1000;
145163
return new EmbedBuilder()

0 commit comments

Comments
 (0)