Skip to content

Commit 7887659

Browse files
Rewrite /afk backend to be guild specific
1 parent edd10a3 commit 7887659

2 files changed

Lines changed: 20 additions & 15 deletions

File tree

src/main/java/technobot/commands/utility/AfkCommand.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
55
import net.dv8tion.jda.api.interactions.commands.OptionType;
66
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
7-
import net.dv8tion.jda.internal.utils.tuple.Pair;
87
import technobot.TechnoBot;
98
import technobot.commands.Category;
109
import technobot.commands.Command;
@@ -30,7 +29,7 @@ public AfkCommand(TechnoBot bot) {
3029
public void execute(SlashCommandInteractionEvent event) {
3130
OptionMapping option = event.getOption("message");
3231
String message = option != null ? option.getAsString() : "";
33-
AfkListener.AFK_MESSAGES.put(event.getUser(), Pair.of(message, new Date().toInstant()));
34-
event.reply(":wave: | See you later!").queue();
32+
AfkListener.AFK_MESSAGES.put(event.getMember(), new AfkListener.AfkStatus(message, new Date().toInstant()));
33+
event.reply(":wave: | **"+event.getMember().getEffectiveName()+"** has gone AFK. See you later!").queue();
3534
}
3635
}
Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package technobot.listeners;
22

33
import net.dv8tion.jda.api.EmbedBuilder;
4-
import net.dv8tion.jda.api.entities.User;
4+
import net.dv8tion.jda.api.entities.Member;
55
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
66
import net.dv8tion.jda.api.hooks.ListenerAdapter;
7-
import net.dv8tion.jda.internal.utils.tuple.Pair;
87
import org.jetbrains.annotations.NotNull;
98
import 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

Comments
 (0)