Skip to content

Commit 73838c5

Browse files
authored
Merge pull request #486 from danthe1st/clear-old-notifs
Also clear unresolved help notifications after one week
2 parents 3c9a497 + bf41eac commit 73838c5

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

src/main/java/net/discordjug/javabot/systems/help/commands/notify/ClearOldHelpNotificationJob.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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"));

src/main/java/net/discordjug/javabot/systems/help/commands/notify/HelpPingSubcommand.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
*/
4949
@AutoDetectableComponentHandler("help-ping")
5050
public class HelpPingSubcommand extends SlashCommand.Subcommand implements ButtonHandler {
51+
static final String MARK_UNACKNOWLEDGED_BUTTON_TEXT = "Mark as unacknowledged";
52+
static final String MARK_ACKNOWLEDGED_BUTTON_TEXT = "Mark as acknowledged";
5153
private static final String WRONG_CHANNEL_MSG = "This command can only be used in **help forum posts**";
5254
private static final long CACHE_CLEANUP_DELAY = 60L;
5355

@@ -161,11 +163,11 @@ private void appendComment(EmbedBuilder eb, String comment) {
161163
}
162164

163165
private Button createAcknowledgementButton(String postId) {
164-
return Button.of(ButtonStyle.SECONDARY, ComponentIdBuilder.build("help-ping", "acknowledge", postId), "Mark as acknowledged");
166+
return Button.of(ButtonStyle.SECONDARY, ComponentIdBuilder.build("help-ping", "acknowledge", postId), MARK_ACKNOWLEDGED_BUTTON_TEXT);
165167
}
166168

167169
private Button createUndoAcknowledgementButton(String postId) {
168-
return Button.of(ButtonStyle.SECONDARY, ComponentIdBuilder.build("help-ping", "unacknowledge", postId), "Mark as unacknowledged");
170+
return Button.of(ButtonStyle.SECONDARY, ComponentIdBuilder.build("help-ping", "unacknowledge", postId), MARK_UNACKNOWLEDGED_BUTTON_TEXT);
169171
}
170172

171173
/**

0 commit comments

Comments
 (0)