Fix reversed leaderboard

This commit is contained in:
2025-08-21 20:06:59 -03:00
parent 6c240cfece
commit aa32abfa90
3 changed files with 9 additions and 13 deletions
+7 -11
View File
@@ -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;
};