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