Merge pull request 'quick fix - cap leaderboard to 7 per page due to field constraints' (#12) from feature/xp-leaderboard into main
Badgey Deployment / build (push) Successful in 6m17s Details
Badgey Deployment / deploy (BADGEY) (push) Successful in 7s Details
Badgey Deployment / deploy (M5_COMPUTER) (push) Successful in 6s Details

Reviewed-on: #12
This commit is contained in:
Xyon 2024-10-19 15:54:26 +00:00
commit bb13e8fab7
1 changed files with 3 additions and 2 deletions

View File

@ -123,10 +123,11 @@ async fn rank(ctx: ManifoldContext<'_>) -> ManifoldResult<()> {
async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> { async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> {
let reply_handle = ctx.reply("Retrieving leaderboard, please stand by...".to_string()).await?; let reply_handle = ctx.reply("Retrieving leaderboard, please stand by...".to_string()).await?;
let entries_per_page = 7; // Maximum due to limitation on fields per embed
let mut pages = Vec::<CreateEmbed>::new(); let mut pages = Vec::<CreateEmbed>::new();
let leaderboard = Xp::get_leaderboard(&ctx.data().database)?; let leaderboard = Xp::get_leaderboard(&ctx.data().database)?;
let total = leaderboard.len(); let total = leaderboard.len();
let pages_needed = (total / 10) + 1; let pages_needed = (total / entries_per_page) + 1;
for i in 0..pages_needed { for i in 0..pages_needed {
let mut page = CreateEmbed::default() let mut page = CreateEmbed::default()
@ -138,7 +139,7 @@ async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> {
fields.push(("User", "".to_string(), true)); fields.push(("User", "".to_string(), true));
fields.push(("XP", "".to_string(), true)); fields.push(("XP", "".to_string(), true));
leaderboard.iter().skip(i*10).enumerate().for_each(|(i, f)| { leaderboard.iter().skip(i*entries_per_page).enumerate().for_each(|(i, f)| {
fields.push(("", format!("{rank}", rank=(i+1)), true)); fields.push(("", format!("{rank}", rank=(i+1)), true));
fields.push(("", format!("<@{id}>", id=f.user_id), true)); fields.push(("", format!("<@{id}>", id=f.user_id), true));
fields.push(("", format!("{xp}", xp=f.xp_value), true)); fields.push(("", format!("{xp}", xp=f.xp_value), true));