11package net .discordjug .javabot .data .h2db .message_cache ;
22
33import java .io .ByteArrayInputStream ;
4+ import java .io .IOException ;
45import java .io .InputStream ;
56import java .net .URI ;
7+ import java .net .URL ;
68import java .net .http .HttpClient ;
79import java .net .http .HttpRequest ;
810import 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