|
20 | 20 |
|
21 | 21 | import java.io.ByteArrayInputStream; |
22 | 22 | 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; |
23 | 27 | import java.nio.charset.StandardCharsets; |
24 | 28 | import java.time.Instant; |
25 | 29 | import java.time.ZoneOffset; |
@@ -137,9 +141,23 @@ public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedM |
137 | 141 | action.addFiles(FileUpload.fromData(buildDeletedMessageFile(author, message), message.getMessageId() + ".txt")); |
138 | 142 | } |
139 | 143 | action.queue(); |
| 144 | + requestMessageAttachments(message); |
140 | 145 | }); |
141 | 146 | } |
142 | 147 |
|
| 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 | + |
143 | 161 | private EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage before) { |
144 | 162 | long epoch = IdCalculatorCommand.getTimestampFromId(before.getMessageId()) / 1000; |
145 | 163 | return new EmbedBuilder() |
|
0 commit comments