mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-19 00:38:54 +00:00
osu: Forget about mods when querying a beatmap for check
This commit is contained in:
parent
b4cf6ce94f
commit
d158d4015e
1 changed files with 43 additions and 42 deletions
|
@ -576,58 +576,59 @@ pub async fn check(ctx: &Context, msg: &Message, mut args: Args) -> CommandResul
|
||||||
let data = ctx.data.read().await;
|
let data = ctx.data.read().await;
|
||||||
let bm = load_beatmap(ctx, msg).await;
|
let bm = load_beatmap(ctx, msg).await;
|
||||||
|
|
||||||
match bm {
|
let bm = match bm {
|
||||||
|
Some((bm, _)) => bm,
|
||||||
None => {
|
None => {
|
||||||
msg.reply(&ctx, "No beatmap queried on this channel.")
|
msg.reply(&ctx, "No beatmap queried on this channel.")
|
||||||
.await?;
|
.await?;
|
||||||
|
return Ok(());
|
||||||
}
|
}
|
||||||
Some((bm, mods_def)) => {
|
};
|
||||||
let mods = args.find::<Mods>().ok().or(mods_def).unwrap_or(Mods::NOMOD);
|
|
||||||
let b = &bm.0;
|
|
||||||
let m = bm.1;
|
|
||||||
let style = args
|
|
||||||
.single::<ScoreListStyle>()
|
|
||||||
.unwrap_or(ScoreListStyle::Grid);
|
|
||||||
let username_arg = args.single::<UsernameArg>().ok();
|
|
||||||
let user_id = match username_arg.as_ref() {
|
|
||||||
Some(UsernameArg::Tagged(v)) => Some(*v),
|
|
||||||
None => Some(msg.author.id),
|
|
||||||
_ => None,
|
|
||||||
};
|
|
||||||
let user = to_user_id_query(username_arg, &data, msg).await?;
|
|
||||||
|
|
||||||
let osu = data.get::<OsuClient>().unwrap();
|
let mods = args.find::<Mods>().ok().unwrap_or_default();
|
||||||
|
let b = &bm.0;
|
||||||
|
let m = bm.1;
|
||||||
|
let style = args
|
||||||
|
.single::<ScoreListStyle>()
|
||||||
|
.unwrap_or(ScoreListStyle::Grid);
|
||||||
|
let username_arg = args.single::<UsernameArg>().ok();
|
||||||
|
let user_id = match username_arg.as_ref() {
|
||||||
|
Some(UsernameArg::Tagged(v)) => Some(*v),
|
||||||
|
None => Some(msg.author.id),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
let user = to_user_id_query(username_arg, &data, msg).await?;
|
||||||
|
|
||||||
let user = osu
|
let osu = data.get::<OsuClient>().unwrap();
|
||||||
.user(user, |f| f)
|
|
||||||
.await?
|
|
||||||
.ok_or_else(|| Error::msg("User not found"))?;
|
|
||||||
let mut scores = osu
|
|
||||||
.scores(b.beatmap_id, |f| f.user(UserID::ID(user.id)).mode(m))
|
|
||||||
.await?
|
|
||||||
.into_iter()
|
|
||||||
.filter(|s| s.mods.contains(mods))
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
scores.sort_by(|a, b| b.pp.unwrap().partial_cmp(&a.pp.unwrap()).unwrap());
|
|
||||||
|
|
||||||
if scores.is_empty() {
|
let user = osu
|
||||||
msg.reply(&ctx, "No scores found").await?;
|
.user(user, |f| f)
|
||||||
return Ok(());
|
.await?
|
||||||
}
|
.ok_or_else(|| Error::msg("User not found"))?;
|
||||||
|
let mut scores = osu
|
||||||
|
.scores(b.beatmap_id, |f| f.user(UserID::ID(user.id)).mode(m))
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.filter(|s| s.mods.contains(mods))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
scores.sort_by(|a, b| b.pp.unwrap().partial_cmp(&a.pp.unwrap()).unwrap());
|
||||||
|
|
||||||
if let Some(user_id) = user_id {
|
if scores.is_empty() {
|
||||||
// Save to database
|
msg.reply(&ctx, "No scores found").await?;
|
||||||
data.get::<OsuUserBests>()
|
return Ok(());
|
||||||
.unwrap()
|
|
||||||
.save(user_id, m, scores.clone())
|
|
||||||
.await
|
|
||||||
.pls_ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
style.display_scores(scores, m, ctx, msg).await?;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(user_id) = user_id {
|
||||||
|
// Save to database
|
||||||
|
data.get::<OsuUserBests>()
|
||||||
|
.unwrap()
|
||||||
|
.save(user_id, m, scores.clone())
|
||||||
|
.await
|
||||||
|
.pls_ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
style.display_scores(scores, m, ctx, msg).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue