Fix reversed leaderboard
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use async_trait::async_trait;
|
||||
use deadpool_redis::redis::AsyncTypedCommands;
|
||||
use deadpool_redis::redis::AsyncCommands;
|
||||
use itertools::Itertools;
|
||||
use twilight_util::builder::embed::{
|
||||
EmbedAuthorBuilder, EmbedBuilder, EmbedFooterBuilder, ImageSource,
|
||||
@@ -44,30 +44,26 @@ impl Command<State> for LeaderboardCommand {
|
||||
.await
|
||||
.map_err(CommandError::RedisPoolFailed)?;
|
||||
|
||||
let top = redis
|
||||
.zrange_withscores(KEY_LEADERBOARD_MONTHLY, 0, 9)
|
||||
let top: Vec<(u64, f64)> = redis
|
||||
.zrevrange_withscores(KEY_LEADERBOARD_MONTHLY, 0, 9)
|
||||
.await
|
||||
.map_err(CommandError::RedisFailed)?;
|
||||
|
||||
log::trace!("Top users for leaderboard: {top:?}");
|
||||
|
||||
let current_user_rank = redis
|
||||
.zrank(KEY_LEADERBOARD_MONTHLY, ctx.event.author.id.get())
|
||||
let current_user_rank: Option<usize> = redis
|
||||
.zrevrank(KEY_LEADERBOARD_MONTHLY, ctx.event.author.id.get())
|
||||
.await
|
||||
.map_err(CommandError::RedisFailed)?;
|
||||
|
||||
let mut users = Vec::new();
|
||||
|
||||
for (user_id, score) in top {
|
||||
let id: u64 = user_id
|
||||
.parse()
|
||||
.expect("User ID could not be parsed for leaderboard");
|
||||
|
||||
let Some(user) = User::get_by_id(id, &ctx.rt.state.db)
|
||||
let Some(user) = User::get_by_id(user_id, &ctx.rt.state.db)
|
||||
.await
|
||||
.map_err(|_| CommandError::DatabaseQueryFailed)?
|
||||
else {
|
||||
log::trace!("User ID {id} not found for leaderboard");
|
||||
log::trace!("User ID {user_id} not found for leaderboard");
|
||||
continue;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user