44import net .dv8tion .jda .api .entities .Emoji ;
55import net .dv8tion .jda .api .entities .Guild ;
66import net .dv8tion .jda .api .entities .MessageEmbed ;
7+ import net .dv8tion .jda .api .entities .User ;
78import net .dv8tion .jda .api .events .interaction .command .SlashCommandInteractionEvent ;
89import net .dv8tion .jda .api .events .interaction .component .ButtonInteractionEvent ;
910import net .dv8tion .jda .api .interactions .commands .OptionMapping ;
@@ -53,7 +54,7 @@ public static void handleButtons(ButtonInteractionEvent event, String[] id) {
5354 case "left" -> page --;
5455 case "right" -> page ++;
5556 }
56- int maxPage = dao .getTotalRankedAccounts () / PAGE_SIZE ;
57+ int maxPage = dao .getTotalAccounts () / PAGE_SIZE ;
5758 if (page <= 0 ) page = maxPage ;
5859 if (page > maxPage ) page = 1 ;
5960 event .getHook ().editOriginalEmbeds (buildExperienceLeaderboard (event .getGuild (), dao , page ))
@@ -63,17 +64,18 @@ public static void handleButtons(ButtonInteractionEvent event, String[] id) {
6364 }
6465
6566 private static MessageEmbed buildExperienceLeaderboard (Guild guild , HelpAccountRepository dao , int page ) throws SQLException {
66- int maxPage = dao .getTotalRankedAccounts () / PAGE_SIZE ;
67- List <HelpAccount > accounts = dao .getAccountsWithRank (Math .min (page , maxPage ), PAGE_SIZE );
67+ int maxPage = dao .getTotalAccounts () / PAGE_SIZE ;
68+ List <HelpAccount > accounts = dao .getAccounts (Math .min (page , maxPage ), PAGE_SIZE );
6869 EmbedBuilder builder = new EmbedBuilder ()
6970 .setTitle ("Experience Leaderboard" )
7071 .setColor (Bot .config .get (guild ).getSlashCommand ().getDefaultColor ())
7172 .setFooter (String .format ("Page %s/%s" , Math .min (page , maxPage ), maxPage ));
7273 accounts .forEach (account -> {
7374 Map .Entry <Long , Double > currentRole = account .getCurrentExperienceGoal (guild );
75+ System .out .println (guild .getJDA ().getUserCache ().toString ());
76+ User user = guild .getJDA ().getUserById (account .getUserId ());
7477 builder .addField (
75- // TODO: implement without using blocking complete calls
76- String .format ("**%s.** %s" , (accounts .indexOf (account ) + 1 ) + (page - 1 ) * PAGE_SIZE , guild .getJDA ().retrieveUserById (account .getUserId ()).complete ().getAsTag ()),
78+ String .format ("**%s.** %s" , (accounts .indexOf (account ) + 1 ) + (page - 1 ) * PAGE_SIZE , user == null ? account .getUserId () : user .getAsTag ()),
7779 String .format ("<@&%s>: `%.0f XP`\n " , currentRole .getKey (), account .getExperience ()),
7880 false );
7981 });
0 commit comments