1414import org .togetherjava .tjbot .features .MessageReceiverAdapter ;
1515
1616import java .awt .Color ;
17+ import java .time .Duration ;
18+ import java .time .Instant ;
1719import java .util .concurrent .ConcurrentHashMap ;
1820import java .util .concurrent .TimeUnit ;
1921import java .util .regex .Pattern ;
@@ -31,7 +33,7 @@ public final class MediaOnlyChannelListener extends MessageReceiverAdapter {
3133 ".*https?://\\ S+\\ .(png|jpe?g|gif|bmp|webp|mp4|mov|avi|webm|mp3|wav|ogg|youtube\\ .com/|youtu\\ .com|imgur\\ .com/).*" ,
3234 Pattern .CASE_INSENSITIVE );
3335
34- private final ConcurrentHashMap <Long , Long > lastValidForwardedMediaMessageTime =
36+ private final ConcurrentHashMap <Long , Instant > lastValidForwardedMediaMessageTime =
3537 new ConcurrentHashMap <>();
3638
3739 /**
@@ -45,40 +47,35 @@ public MediaOnlyChannelListener(Config config) {
4547
4648 @ Override
4749 public void onMessageReceived (MessageReceivedEvent event ) {
48- if (event .getAuthor ().isBot () || event .isWebhookMessage ()) {
50+ if (event .getAuthor ().isBot () || event .isWebhookMessage ()
51+ || event .getMessage ().getType () == MessageType .THREAD_CREATED ) {
4952 return ;
5053 }
5154
5255 Message message = event .getMessage ();
53- if (message .getType () == MessageType .THREAD_CREATED ) {
54- return ;
55- }
56-
5756 long userId = event .getAuthor ().getIdLong ();
5857
59- boolean isForwardedWithMedia =
60- !message .getMessageSnapshots ().isEmpty () && !messageHasNoMediaAttached (message );
61-
62- if (isForwardedWithMedia ) {
63- lastValidForwardedMediaMessageTime .put (userId , System .currentTimeMillis ());
64- return ;
65- }
66-
67- boolean isNormalMediaUpload =
68- message .getMessageSnapshots ().isEmpty () && !messageHasNoMediaAttached (message );
69- if (isNormalMediaUpload ) {
58+ if (!messageHasNoMediaAttached (message )) {
59+ if (!message .getMessageSnapshots ().isEmpty ()) {
60+ lastValidForwardedMediaMessageTime .put (userId , Instant .now ());
61+ }
7062 return ;
7163 }
7264
73- Long lastForwardedMediaTime = lastValidForwardedMediaMessageTime .get (userId );
74- long gracePeriodMillis = TimeUnit . SECONDS . toMillis (1 );
65+ Instant lastForwardedMediaTime = lastValidForwardedMediaMessageTime .get (userId );
66+ Duration gracePeriod = Duration . ofSeconds (1 );
7567
7668 if (lastForwardedMediaTime != null
77- && (System .currentTimeMillis () - lastForwardedMediaTime ) <= gracePeriodMillis ) {
69+ && Duration .between (lastForwardedMediaTime , Instant .now ())
70+ .compareTo (gracePeriod ) <= 0 ) {
7871 lastValidForwardedMediaMessageTime .remove (userId );
7972 return ;
8073 }
8174
75+ deleteAndNotify (message );
76+ }
77+
78+ private void deleteAndNotify (Message message ) {
8279 message .delete ().queue (deleteSuccess -> dmUser (message ).queue (dmSuccess -> {
8380 }, dmFailure -> tempNotifyUserInChannel (message )),
8481 deleteFailure -> tempNotifyUserInChannel (message ));
@@ -106,7 +103,7 @@ private boolean messageHasNoMediaAttached(Message message) {
106103 private MessageCreateData createNotificationMessage (Message message ) {
107104 String originalMessageContent = message .getContentRaw ();
108105 if (originalMessageContent .trim ().isEmpty ()) {
109- originalMessageContent = "( Original message had no visible text content) " ;
106+ originalMessageContent = "Original message had no visible text content" ;
110107 }
111108
112109 MessageEmbed originalMessageEmbed =
0 commit comments