mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-18 00:08:54 +00:00
Set up simple command for osu
This commit is contained in:
parent
125bad04da
commit
2cdff76837
5 changed files with 37 additions and 1 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -3382,6 +3382,7 @@ dependencies = [
|
||||||
"dashmap 5.5.3",
|
"dashmap 5.5.3",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
"poise",
|
||||||
"rand",
|
"rand",
|
||||||
"regex",
|
"regex",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
|
|
@ -20,6 +20,7 @@ rosu-map = "0.1"
|
||||||
time = "0.3"
|
time = "0.3"
|
||||||
serde = { version = "1.0.137", features = ["derive"] }
|
serde = { version = "1.0.137", features = ["derive"] }
|
||||||
serenity = "0.12"
|
serenity = "0.12"
|
||||||
|
poise = "0.6"
|
||||||
zip = "0.6.2"
|
zip = "0.6.2"
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
futures-util = "0.3.30"
|
futures-util = "0.3.30"
|
||||||
|
|
16
youmubot-osu/src/discord/commands.rs
Normal file
16
youmubot-osu/src/discord/commands.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
use super::*;
|
||||||
|
use youmubot_prelude::*;
|
||||||
|
|
||||||
|
/// osu!-related command group.
|
||||||
|
#[poise::command(slash_command, subcommands("top"))]
|
||||||
|
pub async fn osu<U: HasOsuEnv>(_ctx: CmdContext<'_, U>) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns top plays for a given player.
|
||||||
|
///
|
||||||
|
/// If no osu! username is given, defaults to the currently registered user.
|
||||||
|
#[poise::command(slash_command)]
|
||||||
|
async fn top<U: HasOsuEnv>(ctx: CmdContext<'_, U>, username: Option<String>) -> Result<()> {
|
||||||
|
todo!()
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ use serenity::{
|
||||||
utils::MessageBuilder,
|
utils::MessageBuilder,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub use commands::osu as osu_command;
|
||||||
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser, OsuUserMode};
|
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUser, OsuUserMode};
|
||||||
use embeds::{beatmap_embed, score_embed, user_embed};
|
use embeds::{beatmap_embed, score_embed, user_embed};
|
||||||
pub use hook::{dot_osu_hook, hook, score_hook};
|
pub use hook::{dot_osu_hook, hook, score_hook};
|
||||||
|
@ -38,6 +39,7 @@ use crate::{
|
||||||
mod announcer;
|
mod announcer;
|
||||||
pub(crate) mod beatmap_cache;
|
pub(crate) mod beatmap_cache;
|
||||||
mod cache;
|
mod cache;
|
||||||
|
mod commands;
|
||||||
mod db;
|
mod db;
|
||||||
pub(crate) mod display;
|
pub(crate) mod display;
|
||||||
pub(crate) mod embeds;
|
pub(crate) mod embeds;
|
||||||
|
@ -67,6 +69,17 @@ pub struct OsuEnv {
|
||||||
pub(crate) beatmaps: BeatmapMetaCache,
|
pub(crate) beatmaps: BeatmapMetaCache,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets an [OsuEnv] from the current environment.
|
||||||
|
pub trait HasOsuEnv: Send + Sync {
|
||||||
|
fn osu_env(&self) -> &OsuEnv;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: AsRef<OsuEnv> + Send + Sync> HasOsuEnv for T {
|
||||||
|
fn osu_env(&self) -> &OsuEnv {
|
||||||
|
self.as_ref()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl std::fmt::Debug for OsuEnv {
|
impl std::fmt::Debug for OsuEnv {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "<osu::Env>")
|
write!(f, "<osu::Env>")
|
||||||
|
|
|
@ -61,6 +61,7 @@ impl AsRef<youmubot_prelude::Env> for Env {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "osu")]
|
||||||
impl AsRef<youmubot_osu::discord::OsuEnv> for Env {
|
impl AsRef<youmubot_osu::discord::OsuEnv> for Env {
|
||||||
fn as_ref(&self) -> &youmubot_osu::discord::OsuEnv {
|
fn as_ref(&self) -> &youmubot_osu::discord::OsuEnv {
|
||||||
&self.osu
|
&self.osu
|
||||||
|
@ -275,7 +276,11 @@ async fn main() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
commands: vec![poise_register()],
|
commands: vec![
|
||||||
|
poise_register(),
|
||||||
|
#[cfg(feature = "osu")]
|
||||||
|
youmubot_osu::discord::osu_command(),
|
||||||
|
],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.build();
|
.build();
|
||||||
|
|
Loading…
Add table
Reference in a new issue