Fields are capped at 1024, dumdum #15

Merged
xyon merged 2 commits from hotfix/fucking-field-limits-ffs into main 2024-10-20 12:13:33 +00:00
1 changed files with 14 additions and 4 deletions
Showing only changes of commit 54d4764458 - Show all commits

View File

@ -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 = 10;
let entries_per_page = 5;
let mut pages = Vec::<CreateEmbed>::new();
let leaderboard = Xp::get_leaderboard(&ctx.data().database)?;
let total = leaderboard.len();
@ -139,9 +139,19 @@ async fn leaderboard(ctx: ManifoldContext<'_>) -> ManifoldResult<()> {
let mut values = String::new();
leaderboard.iter().skip(i*entries_per_page).enumerate().for_each(|(i, f)| {
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());
let new_rank = format!("{rank}\n", rank=(i+1));
let new_user = format!("<@{user}>\n", user=f.user_id);
let new_value = format!("{xp}\n", xp=f.xp_value);
// field values are capped at 1024 characters
// so we have to check if what we're about to add will break that limit and bail out if so
if (ranks.len() + new_rank.len()) > 1024 || (users.len() + new_user.len()) > 1024 || (values.len() + new_value.len()) > 1024 {
return;
}
ranks.push_str(new_rank.as_str());
users.push_str(new_user.as_str());
values.push_str(new_value.as_str());
});
fields.push(("Rank", &ranks, true));