mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-19 16:58:55 +00:00
osu: Optimize top! and hook
This commit is contained in:
parent
238e44a64c
commit
acc1b92002
3 changed files with 10 additions and 14 deletions
|
@ -21,7 +21,7 @@ lazy_static! {
|
|||
r"(?:https?://)?osu\.ppy\.sh/beatmapsets/(?P<set_id>\d+)/?(?:\#(?P<mode>osu|taiko|fruits|mania)(?:/(?P<beatmap_id>\d+)|/?))?(?:\+(?P<mods>[A-Z]+))?"
|
||||
).unwrap();
|
||||
static ref SHORT_LINK_REGEX: Regex = Regex::new(
|
||||
r"(?:^|\s)/b/(?P<id>\d+)(?:/(?P<mode>osu|taiko|fruits|mania))?(?:\+(?P<mods>[A-Z]+))?"
|
||||
r"(?:^|\s|\W)(?P<main>/b/(?P<id>\d+)(?:/(?P<mode>osu|taiko|fruits|mania))?(?:\+(?P<mods>[A-Z]+))?)"
|
||||
).unwrap();
|
||||
}
|
||||
|
||||
|
@ -281,7 +281,7 @@ fn handle_short_links<'a>(
|
|||
};
|
||||
let r: Result<_> = Ok(ToPrint {
|
||||
embed: EmbedType::Beatmap(beatmap, info, mods),
|
||||
link: capture.get(0).unwrap().as_str(),
|
||||
link: capture.name("main").unwrap().as_str(),
|
||||
mode,
|
||||
});
|
||||
r
|
||||
|
|
|
@ -2,7 +2,7 @@ use crate::{
|
|||
discord::beatmap_cache::BeatmapMetaCache,
|
||||
discord::oppai_cache::BeatmapCache,
|
||||
models::{Beatmap, Mode, Mods, Score, User},
|
||||
request::{BeatmapRequestKind, UserID},
|
||||
request::UserID,
|
||||
Client as OsuHttpClient,
|
||||
};
|
||||
use serenity::{
|
||||
|
@ -527,8 +527,9 @@ pub async fn top(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult
|
|||
.unwrap_or(Mode::Std);
|
||||
|
||||
let user = to_user_id_query(args.single::<UsernameArg>().ok(), &*data, msg)?;
|
||||
|
||||
let meta_cache = data.get::<BeatmapMetaCache>().unwrap();
|
||||
let osu = data.get::<OsuClient>().unwrap();
|
||||
|
||||
let oppai = data.get::<BeatmapCache>().unwrap();
|
||||
let user = osu
|
||||
.user(user, |f| f.mode(mode))
|
||||
|
@ -547,14 +548,7 @@ pub async fn top(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult
|
|||
.into_iter()
|
||||
.last()
|
||||
.ok_or(Error::from("No such play"))?;
|
||||
let beatmap = osu
|
||||
.beatmaps(BeatmapRequestKind::Beatmap(top_play.beatmap_id), |f| {
|
||||
f.mode(mode, true)
|
||||
})
|
||||
.await?
|
||||
.into_iter()
|
||||
.next()
|
||||
.unwrap();
|
||||
let beatmap = meta_cache.get_beatmap(top_play.beatmap_id, mode).await?;
|
||||
let content = oppai.get_beatmap(beatmap.beatmap_id).await?;
|
||||
let beatmap = BeatmapWithMode(beatmap, mode);
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ use tower;
|
|||
use youmubot_prelude::*;
|
||||
|
||||
/// The number of requests per minute to the osu! server.
|
||||
const REQUESTS_PER_MINUTE: u64 = 50;
|
||||
const REQUESTS_PER_MINUTE: u64 = 200;
|
||||
|
||||
type BoxedResp =
|
||||
std::pin::Pin<Box<dyn future::Future<Output = Result<Response, reqwest::Error>> + Send>>;
|
||||
|
@ -64,7 +64,9 @@ impl Client {
|
|||
|
||||
async fn build_request(&self, r: RequestBuilder) -> Result<Response> {
|
||||
let v = r.query(&[("k", &*self.key)]).build()?;
|
||||
Ok(self.http_client.write().await.call(v).await?)
|
||||
let mut client = self.http_client.write().await;
|
||||
future::poll_fn(|ctx| client.poll_ready(ctx)).await?;
|
||||
Ok(client.call(v).await?)
|
||||
}
|
||||
|
||||
pub async fn beatmaps(
|
||||
|
|
Loading…
Add table
Reference in a new issue