mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-05-24 17:20:49 +00:00
osu updatelb
command (#8)
* Make `paginate` take a Paginate trait impl, while `paginate_fn` takes a function * Add `updatelb` command * Implement a member cache * Update member queries to use member cache * Allow everyone to updatelb
This commit is contained in:
parent
b8471152d3
commit
6bf2779d61
11 changed files with 241 additions and 47 deletions
|
@ -29,7 +29,7 @@ use db::OsuUser;
|
|||
use db::{OsuLastBeatmap, OsuSavedUsers, OsuUserBests};
|
||||
use embeds::{beatmap_embed, score_embed, user_embed};
|
||||
pub use hook::hook;
|
||||
use server_rank::{LEADERBOARD_COMMAND, SERVER_RANK_COMMAND};
|
||||
use server_rank::{LEADERBOARD_COMMAND, SERVER_RANK_COMMAND, UPDATE_LEADERBOARD_COMMAND};
|
||||
|
||||
/// The osu! client.
|
||||
pub(crate) struct OsuClient;
|
||||
|
@ -59,6 +59,11 @@ pub fn setup(
|
|||
OsuLastBeatmap::insert_into(&mut *data, &path.join("last_beatmaps.yaml"))?;
|
||||
OsuUserBests::insert_into(&mut *data, &path.join("osu_user_bests.yaml"))?;
|
||||
|
||||
// Locks
|
||||
data.insert::<server_rank::update_lock::UpdateLock>(
|
||||
server_rank::update_lock::UpdateLock::default(),
|
||||
);
|
||||
|
||||
// API client
|
||||
let http_client = data.get::<HTTPClient>().unwrap().clone();
|
||||
let osu_client = Arc::new(OsuHttpClient::new(
|
||||
|
@ -89,7 +94,8 @@ pub fn setup(
|
|||
check,
|
||||
top,
|
||||
server_rank,
|
||||
leaderboard
|
||||
leaderboard,
|
||||
update_leaderboard
|
||||
)]
|
||||
#[default_command(std)]
|
||||
struct Osu;
|
||||
|
@ -247,7 +253,7 @@ async fn list_plays<'a>(
|
|||
|
||||
const ITEMS_PER_PAGE: usize = 5;
|
||||
let total_pages = (plays.len() + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE;
|
||||
paginate(
|
||||
paginate_fn(
|
||||
move |page, ctx, msg| {
|
||||
let plays = plays.clone();
|
||||
Box::pin(async move {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue