Skip to content

Commit f43a76a

Browse files
committed
Reupload attachments from messages blocked by the attachment filter
1 parent a2c49d0 commit f43a76a

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

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

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package net.discordjug.javabot.data.h2db.message_cache;
22

33
import java.io.ByteArrayInputStream;
4+
import java.io.IOException;
45
import java.io.InputStream;
56
import java.net.URI;
7+
import java.net.URL;
68
import java.net.http.HttpClient;
79
import java.net.http.HttpRequest;
810
import java.net.http.HttpResponse.BodyHandlers;
@@ -150,7 +152,7 @@ public void sendUpdatedMessageToLog(Message updated, CachedMessage before) {
150152
*/
151153
public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedMessage message) {
152154
long messageId = message.getMessageId();
153-
if(blockedMessages.contains(messageId)) {
155+
if (blockedMessages.contains(messageId)) {
154156
blockedMessages.remove(messageId);
155157
return;
156158
}
@@ -160,8 +162,7 @@ public void sendDeletedMessageToLog(Guild guild, MessageChannel channel, CachedM
160162
MessageCreateAction action = config.getMessageCacheLogChannel()
161163
.sendMessageEmbeds(buildMessageDeleteEmbed(guild, author, channel, message));
162164
if (message.getMessageContent().length() > MessageEmbed.VALUE_MAX_LENGTH) {
163-
action.addFiles(
164-
FileUpload.fromData(buildDeletedMessageFile(author, message), messageId + ".txt"));
165+
action.addFiles(FileUpload.fromData(buildDeletedMessageFile(author, message), messageId + ".txt"));
165166
}
166167
action.queue();
167168
requestMessageAttachments(message);
@@ -175,13 +176,29 @@ public void sendBlacklistedAttachmentsMessageToLog(Guild guild, MessageChannel c
175176
CachedMessage cachedMessage = CachedMessage.of(message);
176177
MessageCreateAction action = config.getMessageCacheLogChannel()
177178
.sendMessageEmbeds(buildMessageDeleteEmbed(guild, author, channel, cachedMessage));
179+
addAttachmentsToCreateAction(action, message);
178180
if (message.getContentRaw().length() > MessageEmbed.VALUE_MAX_LENGTH) {
179181
action.addFiles(
180182
FileUpload.fromData(buildDeletedMessageFile(author, cachedMessage), message.getId() + ".txt"));
181183
}
182184
action.complete();
183185
}
184186

187+
private void addAttachmentsToCreateAction(MessageCreateAction action, Message original) {
188+
for (Attachment attachment : original.getAttachments()) {
189+
try {
190+
URL url = URI.create(attachment.getUrl()).toURL();
191+
InputStream attachmentStream = url.openStream();
192+
FileUpload upload = FileUpload.fromData(attachmentStream, attachment.getFileName());
193+
if (attachment.isVideo() || attachment.isImage()) upload.asSpoiler();
194+
action.addFiles(upload);
195+
} catch (IOException e) {
196+
ExceptionLogger.capture(e, getClass().getSimpleName());
197+
log.error("Something went wrong during retrieval of stored messages.");
198+
}
199+
}
200+
}
201+
185202
/**
186203
* Requests each attachment from Discord's CDN. This is done in order to prevent
187204
* Discord from deleting the attachment too quickly.

0 commit comments

Comments
 (0)