Improve formatting slightly

This commit is contained in:
Natsu Kagami 2024-02-12 15:11:58 +01:00
parent fdae8be75b
commit 51a2054385
Signed by: nki
GPG key ID: 55A032EB38B49ADB
3 changed files with 30 additions and 18 deletions

View file

@ -122,6 +122,8 @@ mod scores {
}
pub mod table {
use std::borrow::Cow;
use crate::discord::oppai_cache::Accuracy;
use crate::discord::{Beatmap, BeatmapCache, BeatmapInfo, BeatmapMetaCache};
use crate::models::{Mode, Score};
@ -194,7 +196,7 @@ mod scores {
let pp = plays
.iter()
.map(|p| async move {
match p.pp.map(|pp| format!("{:.2}pp", pp)) {
match p.pp.map(|pp| format!("{:.2}", pp)) {
Some(v) => Ok(v),
None => {
let b = beatmap_cache.get_beatmap(p.beatmap_id).await?;
@ -211,7 +213,7 @@ mod scores {
p.mods,
)
.ok()
.map(|pp| format!("{:.2}pp [?]", pp))
.map(|pp| format!("{:.2}[?]", pp))
}
.unwrap_or_else(|| "-".to_owned()));
r
@ -226,18 +228,27 @@ mod scores {
let ranks = plays
.iter()
.enumerate()
.map(|(i, p)| match p.rank {
crate::models::Rank::F => beatmaps[i]
.as_ref()
.and_then(|(_, i)| i.map(|i| i.objects))
.map(|total| {
(p.count_300 + p.count_100 + p.count_50 + p.count_miss) as f64
/ (total as f64)
* 100.0
})
.map(|p| format!("F [{:.0}%]", p))
.unwrap_or_else(|| "F".to_owned()),
v => v.to_string(),
.map(|(i, p)| -> Cow<'static, str> {
match p.rank {
crate::models::Rank::F => beatmaps[i]
.as_ref()
.and_then(|(_, i)| i.map(|i| i.objects))
.map(|total| {
(p.count_300 + p.count_100 + p.count_50 + p.count_miss) as f64
/ (total as f64)
* 100.0
})
.map(|p| format!("{:.0}% F", p).into())
.unwrap_or_else(|| "F".into()),
crate::models::Rank::SS => "SS".into(),
crate::models::Rank::S => if p.perfect {
format!("{}x FC S", p.max_combo)
} else {
format!("{}x S", p.max_combo)
}
.into(),
_v => format!("{}x {}m {}", p.max_combo, p.count_miss, p.rank).into(),
}
})
.collect::<Vec<_>>();
@ -300,7 +311,7 @@ mod scores {
// Each row
for (id, (play, beatmap)) in plays.iter().zip(beatmaps.iter()).enumerate() {
m.push_line(format!(
"{:>3} | {:>pw$} | {:>8} | {:^rw$} | {:mw$} | {:bw$}",
"{:>3} | {:>pw$} | {:>8} | {:>rw$} | {:mw$} | {:bw$}",
id + start + 1,
pp[id],
format!("{:.2}%", play.accuracy(self.mode)),

View file

@ -354,11 +354,11 @@ impl<'a> ScoreEmbedBuilder<'a> {
.unwrap_or_else(|| format!("**{}x**", s.max_combo));
let top_record = self
.top_record
.map(|v| format!("| #{} top record!", v))
.map(|v| format!(" | #{} top record!", v))
.unwrap_or_else(|| "".to_owned());
let world_record = self
.world_record
.map(|v| format!("| #{} on Global Rankings!", v))
.map(|v| format!(" | #{} on Global Rankings!", v))
.unwrap_or_else(|| "".to_owned());
let diff = b.difficulty.apply_mods(s.mods, stars);
let creator = if b.difficulty_name.contains("'s") {

View file

@ -13,6 +13,7 @@ use crate::{
models::{Mode, Mods, Score},
request::UserID,
};
use serenity::{
framework::standard::{macros::command, Args, CommandResult},
model::{channel::Message, id::UserId},
@ -150,7 +151,7 @@ pub async fn server_rank(ctx: &Context, m: &Message, mut args: Args) -> CommandR
"Page **{}**/**{}**. Last updated: `{}`",
page + 1,
(total_len + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE,
last_update.to_rfc2822()
last_update.format("<t:%s:R>"),
));
m.edit(ctx, |f| f.content(content.to_string())).await?;
Ok(true)