2121import org .mangorage .mangobotgithub .core .integration .MangoBotSiteIntegration ;
2222import java .io .IOException ;
2323import java .io .InputStream ;
24- import java .lang .classfile .AccessFlags ;
25- import java .lang .reflect .AccessFlag ;
2624import java .nio .charset .StandardCharsets ;
2725import java .util .HashMap ;
2826import java .util .List ;
@@ -41,7 +39,8 @@ public final class PasteRequestModule {
4139 "1179586337431633991" ,
4240 "716249661798612992" // BenBenLaw Server
4341 );
44- private static final Emoji EMOJI = Emoji .fromUnicode ("\uD83D \uDCCB " );
42+ private static final Emoji CREATE_GISTS = Emoji .fromUnicode ("\uD83D \uDCCB " );
43+ private static final Emoji ANALYZE = Emoji .fromUnicode ("\uD83E \uDDD0 " );
4544
4645 public static void register (IEventBus <IEventType .INormalBusEvent > bus ) {
4746 bus .addGenericListener (10 , MessageReceivedEvent .class , DiscordEvent .class , PasteRequestModule ::onMessage );
@@ -155,13 +154,12 @@ public static void createGists(Message msg, User requester) {
155154 });
156155 }
157156
158- public static void onMessage (DiscordEvent <MessageReceivedEvent > event ) {
159- var dEvent = event .getInstance ();
160- var message = dEvent .getMessage ();
157+ public static void analyzeLog (Message message ) {
161158 var attachments = message .getAttachments ();
162159
163160 var builder = new StringBuilder ();
164161 analyser .scanMessage (message , builder );
162+
165163 if (!attachments .isEmpty ()) {
166164 TaskScheduler .getExecutor ().execute (() -> {
167165 var suceeeded = new AtomicBoolean (false );
@@ -180,7 +178,7 @@ public static void onMessage(DiscordEvent<MessageReceivedEvent> event) {
180178 }
181179 }
182180
183- if (!builder .isEmpty ()) {
181+ if (!builder .isEmpty ()) {;
184182 String id = null ;
185183 if (PluginManager .isLoaded ("mangobotsite" )) {
186184 try {
@@ -193,7 +191,45 @@ public static void onMessage(DiscordEvent<MessageReceivedEvent> event) {
193191 }
194192
195193
196- if (suceeeded .get ()) message .addReaction (EMOJI ).queue ();
194+ if (suceeeded .get ()) message .addReaction (CREATE_GISTS ).queue ();
195+ });
196+ }
197+ }
198+
199+ public static void onMessage (DiscordEvent <MessageReceivedEvent > event ) {
200+ var dEvent = event .getInstance ();
201+ var message = dEvent .getMessage ();
202+ var attachments = message .getAttachments ();
203+
204+ var builder = new StringBuilder ();
205+ analyser .scanMessage (message , builder );
206+
207+ if (!attachments .isEmpty ()) {
208+ TaskScheduler .getExecutor ().execute (() -> {
209+ var suceeeded = new AtomicBoolean (false );
210+ for (Message .Attachment attachment : attachments ) {
211+ try {
212+ byte [] bytes = getData (attachment .getProxy ().download ().get ());
213+ if (bytes == null ) continue ;
214+ String content = new String (bytes , StandardCharsets .UTF_8 );
215+ if (containsPrintableCharacters (content )) {
216+ suceeeded .set (true );
217+ analyser .readLog (builder , content );
218+ break ;
219+ }
220+ } catch (InterruptedException | ExecutionException e ) {
221+ throw new RuntimeException (e );
222+ }
223+ }
224+
225+ if (!builder .isEmpty ()) {;
226+ if (PluginManager .isLoaded ("mangobotsite" )) {
227+ message .addReaction (ANALYZE ).queue ();
228+ }
229+ }
230+
231+
232+ if (suceeeded .get ()) message .addReaction (CREATE_GISTS ).queue ();
197233 });
198234 }
199235 }
@@ -207,12 +243,20 @@ public static void onReact(DiscordEvent<MessageReactionAddEvent> event) {
207243
208244 dEvent .retrieveMessage ().queue (a -> {
209245 if (a .getAttachments ().isEmpty ()) return ;
210- a .retrieveReactionUsers (EMOJI ).queue (b -> {
246+ a .retrieveReactionUsers (CREATE_GISTS ).queue (b -> {
211247 b .stream ().filter (user -> user .getId ().equals (dEvent .getJDA ().getSelfUser ().getId ())).findFirst ().ifPresent (c -> {
212- a .clearReactions (EMOJI ).queue ();
248+ a .clearReactions (CREATE_GISTS ).queue ();
213249 createGists (a , dEvent .getUser ());
214250 });
215251 });
252+
253+ a .retrieveReactionUsers (ANALYZE ).queue (b -> {
254+ b .stream ().filter (user -> user .getId ().equals (dEvent .getJDA ().getSelfUser ().getId ())).findFirst ().ifPresent (c -> {
255+ a .clearReactions (CREATE_GISTS ).queue ();
256+ event .getInstance ().retrieveMessage ().queue (PasteRequestModule ::analyzeLog );
257+ });
258+ });
259+
216260 });
217261
218262 }
0 commit comments