Add leaderboard command and XP winning system
This commit is contained in:
+10
-18
@@ -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(());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user