Add leaderboard command and XP winning system

This commit is contained in:
2025-08-21 02:14:56 -03:00
parent 4563c49245
commit 0318f002fc
11 changed files with 281 additions and 36 deletions
+10 -18
View File
@@ -11,7 +11,9 @@ use twilight_util::builder::embed::{EmbedAuthorBuilder, EmbedBuilder, ImageSourc
use crate::{
constants::COLOR_WHITE,
database::models::{Call, Channel, Message, User, UserIncident},
database::models::{
Call, Channel, Message, User, UserIncident, get_or_create_user_and_set_last_seen,
},
discord::sanitizing::SanitizeDiscordMarkdown,
framework::{
events::traits::{
@@ -142,6 +144,8 @@ impl OnMessageHandler<State> for CallMessageHandler {
return Ok(());
};
let user = get_or_create_user_and_set_last_seen(event.author.clone(), &rt.state.db).await?;
let user_incidents = UserIncident::get_for_user(event.author.id.get(), &rt.state.db)
.await?
.iter()
@@ -268,7 +272,9 @@ impl OnMessageHandler<State> for CallMessageHandler {
{
if error.code == 10015 {
log::debug!("Webhook not found, updating...");
opposite_channel.update_webhook(&rt.state.db, &rt.http).await?;
opposite_channel
.update_webhook(&rt.state.db, &rt.http)
.await?;
}
}
return Ok(());
@@ -297,18 +303,6 @@ impl OnMessageHandler<State> for CallMessageHandler {
.iter()
.any(|rule| rule.action() == &Action::BlockAndPenalty)
{
let user = User::get_by_id(event.author.id.get(), &rt.state.db).await?;
let user = if let Some(user) = user {
user
} else {
let user: User = event.author.clone().into();
user.insert(&rt.state.db).await?;
user
};
penalize_user(user, message, rules, &rt).await?;
}
@@ -374,11 +368,9 @@ impl OnMessageEditHandler<State> for CallMessageEditHandler {
.reply(event.id)
.await?;
let user = User::get_by_id(event.author.id.get(), &rt.state.db).await?;
let user = get_or_create_user_and_set_last_seen(event.author.clone(), &rt.state.db).await?;
if let Some(user) = user {
penalize_user(user, message, rules, &rt).await?;
}
penalize_user(user, message, rules, &rt).await?;
return Ok(());
}