@@ -49,10 +49,9 @@ private void deleteOldMessagesInChannel(TextChannel helpNotificationChannel, Mes
4949 .stream ()
5050 .filter (msg -> msg .getAuthor ().getIdLong () == msg .getJDA ().getSelfUser ().getIdLong ())
5151 .filter (msg -> msg .getTimeCreated ().isBefore (OffsetDateTime .now ().minusDays (3 )))
52- .filter (msg -> msg
53- .getButtons ()
54- .stream ()
55- .anyMatch (button -> "Mark as unacknowledged" .equals (button .getLabel ())))
52+ .filter (msg ->
53+ isOldUnresolvedNotification (msg ) ||
54+ isResolvedNotification (msg ))
5655 .toList ();
5756 helpNotificationChannel .purgeMessages (toDelete );
5857 foundSoFar .addAll (toDelete );
@@ -76,6 +75,27 @@ private void deleteOldMessagesInChannel(TextChannel helpNotificationChannel, Mes
7675 });
7776 }
7877
78+ private boolean isOldUnresolvedNotification (Message msg ) {
79+ return getLastInteractionTimestamp (msg )
80+ .isBefore (OffsetDateTime .now ().minusDays (7 )) &&
81+ hasButtonWithText (msg , HelpPingSubcommand .MARK_ACKNOWLEDGED_BUTTON_TEXT );
82+ }
83+
84+ private OffsetDateTime getLastInteractionTimestamp (Message msg ) {
85+ OffsetDateTime timeEdited = msg .getTimeEdited ();
86+ return timeEdited == null ? msg .getTimeCreated () : timeEdited ;
87+ }
88+
89+ private boolean isResolvedNotification (Message msg ) {
90+ return hasButtonWithText (msg , HelpPingSubcommand .MARK_UNACKNOWLEDGED_BUTTON_TEXT );
91+ }
92+
93+ private boolean hasButtonWithText (Message msg , String expectedText ) {
94+ return msg .getButtons ()
95+ .stream ()
96+ .anyMatch (button -> expectedText .equals (button .getLabel ()));
97+ }
98+
7999 private String convertMessageToString (Message msg ) {
80100 return msg .getContentRaw ()+"\n " +
81101 msg .getEmbeds ().stream ().map (e ->e .toData ().toString ()).collect (Collectors .joining ("\n " ));
0 commit comments