Add basic moderator commands

This commit is contained in:
2025-08-23 00:02:10 -03:00
parent 8868b18be3
commit eaa38f3474
27 changed files with 752 additions and 249 deletions
+11 -29
View File
@@ -1,7 +1,6 @@
use async_trait::async_trait;
use crate::{
database::models::UserIncident,
extras::Extras,
framework::{
commands::{
@@ -14,10 +13,10 @@ use crate::{
},
groups::moderation::{
arguments::UserArgument,
get_incident_page,
permissions::{BotModeratorPermission, BotOwnerPermission},
},
state::State,
utils::Bye,
};
#[derive(Debug)]
@@ -58,14 +57,11 @@ impl Command<State, Extras> for ModeratorCommand {
Ok(arg) => arg,
Err(e) => match e {
ArgumentParsingError::InvalidArgument => {
ctx.send()
.content("❌ User not found in DB.")
.await
.map_err(|_| CommandError::MessageSendingFailed)?;
ctx.send().content("❌ User not found in DB.").await?;
return Ok(());
}
ArgumentParsingError::DatabaseFailed => {
return Err(CommandError::DatabaseFailed);
ArgumentParsingError::DatabaseFailed(e) => {
return Err(CommandError::DatabaseFailed(e));
}
e => {
unreachable!("Unexpected error: {e}");
@@ -75,9 +71,7 @@ impl Command<State, Extras> for ModeratorCommand {
user.is_moderator = !user.is_moderator;
user.insert(&ctx.rt.state.db)
.await
.map_err(|_| CommandError::DatabaseFailed)?;
user.insert(&ctx.rt.state.db).await?;
ctx.send()
.content(format!(
@@ -89,8 +83,7 @@ impl Command<State, Extras> for ModeratorCommand {
"**is no longer** a moderator"
}
))
.await
.map_err(|_| CommandError::MessageSendingFailed)?;
.await?;
Ok(())
}
@@ -126,14 +119,11 @@ impl Command<State, Extras> for IncidentsCommand {
Ok(Arg(user)) => user,
Err(e) => match e {
ArgumentParsingError::InvalidArgument => {
ctx.send()
.content("❌ User not found in DB.")
.await
.map_err(|_| CommandError::MessageSendingFailed)?;
ctx.send().content("❌ User not found in DB.").await?;
return Ok(());
}
ArgumentParsingError::DatabaseFailed => {
return Err(CommandError::DatabaseFailed);
ArgumentParsingError::DatabaseFailed(e) => {
return Err(CommandError::DatabaseFailed(e));
}
e => {
unreachable!("Unexpected error: {e}");
@@ -141,17 +131,9 @@ impl Command<State, Extras> for IncidentsCommand {
},
};
let incidents = UserIncident::get_for_user(user.id, &ctx.rt.state.db)
.await
.map_err(|_| CommandError::DatabaseFailed)?;
let message = get_incident_page(user.id, &ctx.rt.state.db, 0).await?;
ctx.send()
.content(format!(
"Great! The user fetched from the DB is {}",
user.name
))
.await
.bye();
ctx.send_from_builder(message).await?;
Ok(())
}