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
|
@ -172,7 +172,7 @@ pub async fn ranks(ctx: &Context, m: &Message) -> CommandResult {
|
|||
let total_pages = (ranks.len() + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE;
|
||||
let last_updated = ranks.iter().map(|(_, cfu)| cfu.last_update).min().unwrap();
|
||||
|
||||
paginate(
|
||||
paginate_fn(
|
||||
move |page, ctx, msg| {
|
||||
let ranks = ranks.clone();
|
||||
Box::pin(async move {
|
||||
|
@ -255,16 +255,17 @@ pub async fn contestranks(ctx: &Context, m: &Message, mut args: Args) -> Command
|
|||
let data = ctx.data.read().await;
|
||||
let contest_id: u64 = args.single()?;
|
||||
let guild = m.guild_id.unwrap(); // Guild-only command
|
||||
let member_cache = data.get::<MemberCache>().unwrap();
|
||||
let members = CfSavedUsers::open(&*data).borrow()?.clone();
|
||||
let members = members
|
||||
.into_iter()
|
||||
.map(|(user_id, cf_user)| {
|
||||
guild
|
||||
.member(&ctx, user_id)
|
||||
member_cache
|
||||
.query(&ctx, user_id, guild)
|
||||
.map(|v| v.map(|v| (cf_user.handle, v)))
|
||||
})
|
||||
.collect::<stream::FuturesUnordered<_>>()
|
||||
.filter_map(|v| future::ready(v.ok()))
|
||||
.filter_map(|v| future::ready(v))
|
||||
.collect::<HashMap<_, _>>()
|
||||
.await;
|
||||
let http = data.get::<CFClient>().unwrap();
|
||||
|
@ -301,7 +302,7 @@ pub async fn contestranks(ctx: &Context, m: &Message, mut args: Args) -> Command
|
|||
const ITEMS_PER_PAGE: usize = 10;
|
||||
let total_pages = (ranks.len() + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE;
|
||||
|
||||
paginate(
|
||||
paginate_fn(
|
||||
move |page, ctx, msg| {
|
||||
let contest = contest.clone();
|
||||
let problems = problems.clone();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue