mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-19 16:58:55 +00:00
Apply manual clippy
This commit is contained in:
parent
b9f6fa7fb8
commit
6458454ba9
4 changed files with 58 additions and 60 deletions
|
@ -8,7 +8,7 @@ use serenity::{
|
||||||
},
|
},
|
||||||
model::channel::{Channel, Message},
|
model::channel::{Channel, Message},
|
||||||
};
|
};
|
||||||
use std::string::ToString;
|
use std::fmt::Display;
|
||||||
use youmubot_prelude::*;
|
use youmubot_prelude::*;
|
||||||
|
|
||||||
#[command]
|
#[command]
|
||||||
|
@ -108,8 +108,7 @@ async fn get_image(
|
||||||
let req = client
|
let req = client
|
||||||
.get(format!(
|
.get(format!(
|
||||||
"https://danbooru.donmai.us/posts.json?tags=rating:{}+{}",
|
"https://danbooru.donmai.us/posts.json?tags=rating:{}+{}",
|
||||||
rating.to_string(),
|
rating, tags
|
||||||
tags
|
|
||||||
))
|
))
|
||||||
.query(&[("limit", "50"), ("random", "true")])
|
.query(&[("limit", "50"), ("random", "true")])
|
||||||
.build()?;
|
.build()?;
|
||||||
|
@ -133,13 +132,12 @@ enum Rating {
|
||||||
Safe,
|
Safe,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToString for Rating {
|
impl Display for Rating {
|
||||||
fn to_string(&self) -> String {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
use Rating::*;
|
use Rating::*;
|
||||||
match self {
|
f.write_str(match self {
|
||||||
Explicit => "explicit",
|
Explicit => "explicit",
|
||||||
Safe => "safe",
|
Safe => "safe",
|
||||||
}
|
})
|
||||||
.to_owned()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,11 +34,11 @@ mod scores {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ScoreListStyle {
|
impl ScoreListStyle {
|
||||||
pub async fn display_scores<'a>(
|
pub async fn display_scores(
|
||||||
self,
|
self,
|
||||||
scores: Vec<Score>,
|
scores: Vec<Score>,
|
||||||
mode: Mode,
|
mode: Mode,
|
||||||
ctx: &'a Context,
|
ctx: &Context,
|
||||||
guild_id: Option<GuildId>,
|
guild_id: Option<GuildId>,
|
||||||
m: Message,
|
m: Message,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
@ -63,10 +63,10 @@ mod scores {
|
||||||
use crate::discord::{cache::save_beatmap, BeatmapWithMode, OsuEnv};
|
use crate::discord::{cache::save_beatmap, BeatmapWithMode, OsuEnv};
|
||||||
use crate::models::{Mode, Score};
|
use crate::models::{Mode, Score};
|
||||||
|
|
||||||
pub async fn display_scores_grid<'a>(
|
pub async fn display_scores_grid(
|
||||||
scores: Vec<Score>,
|
scores: Vec<Score>,
|
||||||
mode: Mode,
|
mode: Mode,
|
||||||
ctx: &'a Context,
|
ctx: &Context,
|
||||||
guild_id: Option<GuildId>,
|
guild_id: Option<GuildId>,
|
||||||
mut on: Message,
|
mut on: Message,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
@ -153,10 +153,10 @@ mod scores {
|
||||||
use crate::discord::{Beatmap, BeatmapInfo, OsuEnv};
|
use crate::discord::{Beatmap, BeatmapInfo, OsuEnv};
|
||||||
use crate::models::{Mode, Score};
|
use crate::models::{Mode, Score};
|
||||||
|
|
||||||
pub async fn display_scores_table<'a>(
|
pub async fn display_scores_table(
|
||||||
scores: Vec<Score>,
|
scores: Vec<Score>,
|
||||||
mode: Mode,
|
mode: Mode,
|
||||||
ctx: &'a Context,
|
ctx: &Context,
|
||||||
mut on: Message,
|
mut on: Message,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
if scores.is_empty() {
|
if scores.is_empty() {
|
||||||
|
@ -298,8 +298,7 @@ mod scores {
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
const SCORE_HEADERS: [&str; 6] =
|
const SCORE_HEADERS: [&str; 6] = ["#", "PP", "Acc", "Ranks", "Mods", "Beatmap"];
|
||||||
["#", "PP", "Acc", "Ranks", "Mods", "Beatmap"];
|
|
||||||
const SCORE_ALIGNS: [Align; 6] = [Right, Right, Right, Right, Right, Left];
|
const SCORE_ALIGNS: [Align; 6] = [Right, Right, Right, Right, Right, Left];
|
||||||
|
|
||||||
let score_arr = plays
|
let score_arr = plays
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::{borrow::Cow, collections::HashMap, str::FromStr, sync::Arc};
|
use std::{borrow::Cow, cmp::Ordering, collections::HashMap, str::FromStr, sync::Arc};
|
||||||
|
|
||||||
use chrono::DateTime;
|
use chrono::DateTime;
|
||||||
use pagination::paginate_with_first_message;
|
use pagination::paginate_with_first_message;
|
||||||
|
@ -139,47 +139,48 @@ pub async fn server_rank(ctx: &Context, m: &Message, mut args: Args) -> CommandR
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.min();
|
.min();
|
||||||
let sort_fn: Box<dyn Fn(&(Member, OsuUser), &(Member, OsuUser)) -> std::cmp::Ordering> =
|
type Item = (Member, OsuUser);
|
||||||
match query {
|
#[allow(clippy::type_complexity)]
|
||||||
RankQuery::PP => Box::new(|(_, a), (_, b)| {
|
let sort_fn: Box<dyn Fn(&Item, &Item) -> Ordering> = match query {
|
||||||
a.modes
|
RankQuery::PP => Box::new(|(_, a), (_, b)| {
|
||||||
.get(&mode)
|
a.modes
|
||||||
.map(|v| v.pp)
|
.get(&mode)
|
||||||
.partial_cmp(&b.modes.get(&mode).map(|v| v.pp))
|
.map(|v| v.pp)
|
||||||
.unwrap()
|
.partial_cmp(&b.modes.get(&mode).map(|v| v.pp))
|
||||||
.reverse()
|
.unwrap()
|
||||||
}),
|
.reverse()
|
||||||
RankQuery::TotalPP => Box::new(|(_, a), (_, b)| {
|
}),
|
||||||
a.modes
|
RankQuery::TotalPP => Box::new(|(_, a), (_, b)| {
|
||||||
.values()
|
a.modes
|
||||||
.map(|v| v.pp)
|
.values()
|
||||||
.sum::<f64>()
|
.map(|v| v.pp)
|
||||||
.partial_cmp(&b.modes.values().map(|v| v.pp).sum())
|
.sum::<f64>()
|
||||||
.unwrap()
|
.partial_cmp(&b.modes.values().map(|v| v.pp).sum())
|
||||||
.reverse()
|
.unwrap()
|
||||||
}),
|
.reverse()
|
||||||
RankQuery::MapLength => Box::new(|(_, a), (_, b)| {
|
}),
|
||||||
a.modes
|
RankQuery::MapLength => Box::new(|(_, a), (_, b)| {
|
||||||
.get(&mode)
|
a.modes
|
||||||
.map(|v| v.map_length)
|
.get(&mode)
|
||||||
.partial_cmp(&b.modes.get(&mode).map(|v| v.map_length))
|
.map(|v| v.map_length)
|
||||||
.unwrap()
|
.partial_cmp(&b.modes.get(&mode).map(|v| v.map_length))
|
||||||
.reverse()
|
.unwrap()
|
||||||
}),
|
.reverse()
|
||||||
RankQuery::MapAge { newest_first } => Box::new(move |(_, a), (_, b)| {
|
}),
|
||||||
let r = a
|
RankQuery::MapAge { newest_first } => Box::new(move |(_, a), (_, b)| {
|
||||||
.modes
|
let r = a
|
||||||
.get(&mode)
|
.modes
|
||||||
.map(|v| v.map_age)
|
.get(&mode)
|
||||||
.partial_cmp(&b.modes.get(&mode).map(|v| v.map_age))
|
.map(|v| v.map_age)
|
||||||
.unwrap();
|
.partial_cmp(&b.modes.get(&mode).map(|v| v.map_age))
|
||||||
if newest_first {
|
.unwrap();
|
||||||
r.reverse()
|
if newest_first {
|
||||||
} else {
|
r.reverse()
|
||||||
r
|
} else {
|
||||||
}
|
r
|
||||||
}),
|
}
|
||||||
};
|
}),
|
||||||
|
};
|
||||||
users.sort_unstable_by(sort_fn);
|
users.sort_unstable_by(sort_fn);
|
||||||
|
|
||||||
if users.is_empty() {
|
if users.is_empty() {
|
||||||
|
@ -465,7 +466,7 @@ pub async fn get_leaderboard(
|
||||||
OrderBy::PP => scores.sort_by(|a, b| {
|
OrderBy::PP => scores.sort_by(|a, b| {
|
||||||
(b.official, b.pp)
|
(b.official, b.pp)
|
||||||
.partial_cmp(&(a.official, a.pp))
|
.partial_cmp(&(a.official, a.pp))
|
||||||
.unwrap_or(std::cmp::Ordering::Equal)
|
.unwrap_or(Ordering::Equal)
|
||||||
}),
|
}),
|
||||||
OrderBy::Score => {
|
OrderBy::Score => {
|
||||||
scores.sort_by(|a, b| b.score.normalized_score.cmp(&a.score.normalized_score))
|
scores.sort_by(|a, b| b.score.normalized_score.cmp(&a.score.normalized_score))
|
||||||
|
|
|
@ -241,7 +241,7 @@ pub async fn paginate_with_first_message(
|
||||||
};
|
};
|
||||||
|
|
||||||
for reaction in reactions {
|
for reaction in reactions {
|
||||||
if let None = reaction.delete_all(&ctx).await.pls_ok() {
|
if reaction.delete_all(&ctx).await.pls_ok().is_none() {
|
||||||
// probably no permission to delete all reactions, fall back to delete my own.
|
// probably no permission to delete all reactions, fall back to delete my own.
|
||||||
reaction.delete(&ctx).await.pls_ok();
|
reaction.delete(&ctx).await.pls_ok();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue