From 2db1d7d6e2e445eeb142ecf854acfe95e8573df1 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Fri, 29 Nov 2024 22:30:15 +0100 Subject: [PATCH 1/2] fix /leaderboard thanks for unknown users --- .../user_commands/leaderboard/ThanksLeaderboardSubcommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java b/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java index 1c283c4be..c29fc0de7 100644 --- a/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java +++ b/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java @@ -97,7 +97,7 @@ private List> getCounts(String query, Guild guild) { while (rs.next()) { long count = rs.getLong(1); long userId = rs.getLong(2); - Member member = guild.retrieveMemberById(userId).complete(); + Member member = guild.retrieveMemberById(userId).onErrorMap(e -> null).complete(); if (member == null) continue; memberData.add(new Pair<>(member, count)); } From d49194a521e395010ba3c6484423d7444bbe9c20 Mon Sep 17 00:00:00 2001 From: danthe1st Date: Fri, 29 Nov 2024 22:37:27 +0100 Subject: [PATCH 2/2] include non-members in /leaderboard thanks --- .../ThanksLeaderboardSubcommand.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java b/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java index c29fc0de7..969f5e046 100644 --- a/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java +++ b/src/main/java/net/discordjug/javabot/systems/user_commands/leaderboard/ThanksLeaderboardSubcommand.java @@ -7,7 +7,7 @@ import net.discordjug.javabot.util.Responses; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Guild; -import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.UserSnowflake; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.commands.build.SubcommandData; @@ -50,7 +50,7 @@ SELECT COUNT(id), helper_id FROM help_channel_thanks GROUP BY helper_id""", event.getGuild()).stream() .limit(3) - .map(p -> String.format(format, p.getSecond(), p.getFirst().getUser().getAsMention())) + .map(p -> String.format(format, p.getSecond(), p.getFirst().getAsMention())) .collect(collector); String helpersThisWeek = getCounts(""" SELECT COUNT(id), helper_id @@ -58,14 +58,14 @@ SELECT COUNT(id), helper_id WHERE thanked_at > DATEADD('week', -1, CURRENT_TIMESTAMP(0)) GROUP BY helper_id""", event.getGuild()).stream() .limit(3) - .map(p -> String.format(format, p.getSecond(), p.getFirst().getUser().getAsMention())) + .map(p -> String.format(format, p.getSecond(), p.getFirst().getAsMention())) .collect(collector); String totalHelped = getCounts(""" SELECT COUNT(id) AS count, user_id FROM help_channel_thanks GROUP BY user_id""", event.getGuild()).stream() .limit(3) - .map(p -> String.format(format, p.getSecond(), p.getFirst().getUser().getAsMention())) + .map(p -> String.format(format, p.getSecond(), p.getFirst().getAsMention())) .collect(collector); String helpedThisWeek = getCounts(""" SELECT COUNT(id) AS count, user_id @@ -73,7 +73,7 @@ SELECT COUNT(id) AS count, user_id WHERE thanked_at > DATEADD('week', -1, CURRENT_TIMESTAMP(0)) GROUP BY user_id""", event.getGuild()).stream() .limit(3) - .map(p -> String.format(format, p.getSecond(), p.getFirst().getUser().getAsMention())) + .map(p -> String.format(format, p.getSecond(), p.getFirst().getAsMention())) .collect(collector); EmbedBuilder embed = new EmbedBuilder() .setTitle("Thanks Leaderboard") @@ -86,20 +86,18 @@ WHERE thanked_at > DATEADD('week', -1, CURRENT_TIMESTAMP(0)) }); } - private List> getCounts(String query, Guild guild) { + private List> getCounts(String query, Guild guild) { try { return dbActions.mapQuery( query, s -> { }, rs -> { - List> memberData = new ArrayList<>(); + List> memberData = new ArrayList<>(); while (rs.next()) { long count = rs.getLong(1); long userId = rs.getLong(2); - Member member = guild.retrieveMemberById(userId).onErrorMap(e -> null).complete(); - if (member == null) continue; - memberData.add(new Pair<>(member, count)); + memberData.add(new Pair<>(UserSnowflake.fromId(userId), count)); } // Sort with high counts first. memberData.sort((o1, o2) -> Long.compare(o2.getSecond(), o1.getSecond()));