Pivot to a different approach that only uses three fields like i should've done in the first place

This commit is contained in:
Xyon 2024-10-20 12:42:16 +01:00
parent 999cef6dcd
commit 9c65c14bf8
Signed by: xyon
GPG Key ID: DD18155D6B18078D
1 changed files with 11 additions and 8 deletions

View File

@ -123,7 +123,7 @@ 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 = 5; // Maximum due to limitation on fields per embed let entries_per_page = 10;
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();
@ -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(); .title(format!("XP Leaderboard Page {page} of {total_pages}", page=(i + 1), total_pages=&pages_needed)).to_owned();
let mut fields = Vec::new(); let mut fields = Vec::new();
let mut ranks = String::new();
fields.push(("Rank", "".to_string(), true)); let mut users = String::new();
fields.push(("User", "".to_string(), true)); let mut values = String::new();
fields.push(("XP", "".to_string(), true));
leaderboard.iter().skip(i*entries_per_page).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)); ranks.push_str(format!("{rank}\n", rank=(i+1)).as_str());
fields.push(("", format!("<@{id}>", id=f.user_id), true)); users.push_str(format!("<@{user}>\n", user=f.user_id).as_str());
fields.push(("", format!("{xp}", xp=f.xp_value), true)); 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); page.fields(fields);
pages.push(page); pages.push(page);