2929import net .javadiscord .javabot .data .config .guild .ModerationConfig ;
3030import net .javadiscord .javabot .util .InteractionUtils ;
3131import net .javadiscord .javabot .util .Responses ;
32+ import net .javadiscord .javabot .util .WebhookUtil ;
33+
3234import org .jetbrains .annotations .NotNull ;
3335
3436import java .time .Instant ;
3537import java .util .List ;
38+ import java .util .function .Consumer ;
3639
3740/**
3841 * Manages all interactions regarding the report-system.
@@ -154,7 +157,11 @@ private void handleMessageReport(ModalInteractionEvent event, String messageId)
154157 embed .setTitle (String .format ("%s reported a Message from %s" , event .getUser ().getName (), target .getAuthor ().getName ()));
155158 embed .addField ("Message" , String .format ("[Jump to Message](%s)" , target .getJumpUrl ()), false );
156159 MessageChannel reportChannel = config .getModerationConfig ().getReportChannel ();
157- reportChannel .sendMessageEmbeds (embed .build ()).queue (m -> createReportThread (m , target .getAuthor ().getIdLong (), config .getModerationConfig ()));
160+ reportChannel .sendMessageEmbeds (embed .build ()).queue (m -> createReportThread (m , target .getAuthor ().getIdLong (), config .getModerationConfig (), thread ->{
161+ WebhookUtil .ensureWebhookExists (thread .getParentChannel ().asStandardGuildMessageChannel (), wh ->{
162+ WebhookUtil .mirrorMessageToWebhook (wh , target , target .getContentRaw (), thread .getIdLong ());
163+ });
164+ }));
158165 embed .setDescription ("Successfully reported " + "`" + target .getAuthor ().getAsTag () + "`!\n Your report has been send to our Moderators" );
159166 event .getHook ().sendMessageEmbeds (embed .build ()).queue ();
160167 }, failure -> {
@@ -173,13 +180,24 @@ private ActionRow setComponents(long targetId, long threadId) {
173180 }
174181
175182 private void createReportThread (Message message , long targetId , ModerationConfig config ) {
183+ createReportThread (message , targetId , config , thread ->{});
184+ }
185+
186+ private void createReportThread (Message message , long targetId , ModerationConfig config , Consumer <ThreadChannel > onSuccess ) {
176187 message .createThreadChannel (message .getEmbeds ().get (0 ).getTitle ()).queue (
177- thread -> thread .sendMessage (config .getStaffRole ().getAsMention ())
188+ thread -> {
189+ thread .sendMessage (config .getStaffRole ().getAsMention ())
178190 .setComponents (setComponents (targetId , thread .getIdLong ()))
179- .queue ()
191+ .queue ();
192+ onSuccess .accept (thread );
193+ }
180194 );
181195 }
182196
197+
198+
199+
200+
183201 private EmbedBuilder buildReportEmbed (User reported , User reportedBy , String reason , Channel channel ) {
184202 return new EmbedBuilder ()
185203 .setAuthor (reported .getAsTag (), null , reported .getEffectiveAvatarUrl ())
0 commit comments