From 9c65c14bf8b1f47a3df3068a2d9ab5984e27d73f Mon Sep 17 00:00:00 2001 From: Xyon Date: Sun, 20 Oct 2024 12:42:16 +0100 Subject: [PATCH] Pivot to a different approach that only uses three fields like i should've done in the first place --- src/badgey/commands/ranks.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/badgey/commands/ranks.rs b/src/badgey/commands/ranks.rs index 4128530..aed7e73 100644 --- a/src/badgey/commands/ranks.rs +++ b/src/badgey/commands/ranks.rs @@ -123,7 +123,7 @@ async fn rank(ctx: ManifoldContext<'_>) -> ManifoldResult<()> { async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> { let reply_handle = ctx.reply("Retrieving leaderboard, please stand by...".to_string()).await?; - let entries_per_page = 5; // Maximum due to limitation on fields per embed + let entries_per_page = 10; let mut pages = Vec::::new(); let leaderboard = Xp::get_leaderboard(&ctx.data().database)?; let total = leaderboard.len(); @@ -134,17 +134,20 @@ async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> { .title(format!("XP Leaderboard Page {page} of {total_pages}", page=(i + 1), total_pages=&pages_needed)).to_owned(); let mut fields = Vec::new(); - - fields.push(("Rank", "".to_string(), true)); - fields.push(("User", "".to_string(), true)); - fields.push(("XP", "".to_string(), true)); + let mut ranks = String::new(); + let mut users = String::new(); + let mut values = String::new(); leaderboard.iter().skip(i*entries_per_page).enumerate().for_each(|(i, f)| { - fields.push(("", format!("{rank}", rank=(i+1)), true)); - fields.push(("", format!("<@{id}>", id=f.user_id), true)); - fields.push(("", format!("{xp}", xp=f.xp_value), true)); + ranks.push_str(format!("{rank}\n", rank=(i+1)).as_str()); + users.push_str(format!("<@{user}>\n", user=f.user_id).as_str()); + values.push_str(format!("{xp}\n", xp=f.xp_value).as_str()); }); + fields.push(("Rank", &ranks, true)); + fields.push(("User", &users, true)); + fields.push(("XP", &values, true)); + page.fields(fields); pages.push(page);