diff --git a/src/badgey/commands/ranks.rs b/src/badgey/commands/ranks.rs index 3080d3c..87605a9 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; + let entries_per_page = 20; let mut pages = Vec::::new(); let leaderboard = Xp::get_leaderboard(&ctx.data().database)?; let total = leaderboard.len(); @@ -138,8 +138,15 @@ async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> { let mut users = String::new(); let mut values = String::new(); - leaderboard.iter().skip(i*entries_per_page).enumerate().for_each(|(i, f)| { - let new_rank = format!("{rank}\n", rank=(i+1)); + let offset = i*entries_per_page; + + leaderboard.iter().skip(offset).enumerate().for_each(|(j, f)| { + // cap at per-page limit + if j >= entries_per_page { + return; + } + + let new_rank = format!("{rank}\n", rank=(j+1+offset)); let new_user = format!("<@{user}>\n", user=f.user_id); let new_value = format!("{xp}\n", xp=f.xp_value);