11package technobot .listeners ;
22
33import net .dv8tion .jda .api .EmbedBuilder ;
4- import net .dv8tion .jda .api .entities .User ;
4+ import net .dv8tion .jda .api .entities .Member ;
55import net .dv8tion .jda .api .events .message .MessageReceivedEvent ;
66import net .dv8tion .jda .api .hooks .ListenerAdapter ;
7- import net .dv8tion .jda .internal .utils .tuple .Pair ;
87import org .jetbrains .annotations .NotNull ;
98import technobot .util .embeds .EmbedColor ;
109
@@ -20,7 +19,7 @@ public class AfkListener extends ListenerAdapter {
2019
2120
2221 /** Map of User objects to a pair containing the AFK message to be sent and the time created */
23- public static HashMap <User , Pair < String , Instant > > AFK_MESSAGES = new HashMap <>();
22+ public static HashMap <Member , AfkStatus > AFK_MESSAGES = new HashMap <>();
2423
2524 /**
2625 * Sends AFK messages if necessary.
@@ -30,26 +29,33 @@ public class AfkListener extends ListenerAdapter {
3029 @ Override
3130 public void onMessageReceived (@ NotNull MessageReceivedEvent event ) {
3231 // Check if AFK user has returned
33- User messageAuthor = event .getMember ().getUser ();
34- if (AFK_MESSAGES .containsKey (messageAuthor )) {
35- AFK_MESSAGES .remove (messageAuthor );
32+ if (AFK_MESSAGES .containsKey (event .getMember ())) {
33+ AFK_MESSAGES .remove (event .getMember ());
3634 event .getMessage ().addReaction ("\uD83D \uDC4B " ).queue ();
3735 return ;
3836 }
3937
4038 // Check mentions against AFK users
41- for (User user : event .getMessage ().getMentions ().getUsers ()) {
42- Pair < String , Instant > message = AFK_MESSAGES .get (user );
43- if (message != null ) {
39+ for (Member member : event .getMessage ().getMentions ().getMembers ()) {
40+ AfkStatus status = AFK_MESSAGES .get (member );
41+ if (status != null ) {
4442 // Mentioned user was AFK -- send message response
4543 EmbedBuilder embed = new EmbedBuilder ()
4644 .setColor (EmbedColor .DEFAULT .color )
47- .setAuthor (user . getName ()+" is currently AFK" , null , user .getEffectiveAvatarUrl ())
48- .setDescription (message . getLeft ())
49- .setTimestamp (message . getRight ());
45+ .setAuthor (member . getEffectiveName ()+" is currently AFK" , null , member .getEffectiveAvatarUrl ())
46+ .setDescription (status . message ())
47+ .setTimestamp (status . timestamp ());
5048 event .getChannel ().sendMessageEmbeds (embed .build ()).queue ();
5149 return ;
5250 }
5351 }
5452 }
53+
54+ /**
55+ * represents an AFK status message and timestamp.
56+ *
57+ * @param message the afk message to be sent.
58+ * @param timestamp the time the user when afk.
59+ */
60+ public record AfkStatus (String message , Instant timestamp ) {}
5561}
0 commit comments