feat: prevent non admin to configure server
This commit is contained in:
parent
acb9c721c6
commit
5a6fdd74fc
@ -1,5 +1,8 @@
|
|||||||
use crate::botv2::{
|
use crate::botv2::{
|
||||||
domain::server_config::change_enable_server::change_enable_server,
|
domain::server_config::{
|
||||||
|
change_enable_server::change_enable_server,
|
||||||
|
check_if_server_enable_and_admin::check_if_server_enable_and_user_admin,
|
||||||
|
},
|
||||||
init::{Context, Error},
|
init::{Context, Error},
|
||||||
};
|
};
|
||||||
use poise::{
|
use poise::{
|
||||||
@ -27,6 +30,38 @@ pub async fn feature(
|
|||||||
};
|
};
|
||||||
let entity_name = ctx.data().entity_name.clone();
|
let entity_name = ctx.data().entity_name.clone();
|
||||||
let footer = CreateEmbedFooter::new(entity_name.clone());
|
let footer = CreateEmbedFooter::new(entity_name.clone());
|
||||||
|
match check_if_server_enable_and_user_admin(guild.get(), ctx.author().id.get(), ctx.http())
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok((ok, _)) => {
|
||||||
|
if !ok {
|
||||||
|
let embed = CreateEmbed::new()
|
||||||
|
.title("You are not an admin")
|
||||||
|
.color(colour::Color::RED)
|
||||||
|
.footer(footer);
|
||||||
|
if let Err(why) = ctx
|
||||||
|
.send(CreateReply::default().embed(embed).ephemeral(true))
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
tracing::error!("Error sending message: {:?}", why);
|
||||||
|
}
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(_) => {
|
||||||
|
let embed = CreateEmbed::new()
|
||||||
|
.title("You are not an admin")
|
||||||
|
.color(colour::Color::RED)
|
||||||
|
.footer(footer);
|
||||||
|
if let Err(why) = ctx
|
||||||
|
.send(CreateReply::default().embed(embed).ephemeral(true))
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
tracing::error!("Error sending message: {:?}", why);
|
||||||
|
}
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
let answer_auto_meme = match auto_meme {
|
let answer_auto_meme = match auto_meme {
|
||||||
Some(enable) => match change_enable_server(guild.get(), enable).await {
|
Some(enable) => match change_enable_server(guild.get(), enable).await {
|
||||||
Ok(_) => Some(
|
Ok(_) => Some(
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
use crate::botv2::{
|
use crate::botv2::{
|
||||||
cmd::server_config::{feature::feature, init_server::init},
|
cmd::server_config::{feature::feature, init_server::init},
|
||||||
domain::server_config::get_server_config::get_server_config,
|
domain::server_config::{
|
||||||
|
check_if_server_enable_and_admin::check_if_server_enable_and_user_admin,
|
||||||
|
get_server_config::get_server_config,
|
||||||
|
},
|
||||||
init::{Context, Error},
|
init::{Context, Error},
|
||||||
};
|
};
|
||||||
use poise::{
|
use poise::{
|
||||||
@ -48,6 +51,38 @@ async fn server_info(ctx: Context<'_>, ephemeral: Option<bool>) -> Result<(), Er
|
|||||||
};
|
};
|
||||||
let entity_name = ctx.data().entity_name.clone();
|
let entity_name = ctx.data().entity_name.clone();
|
||||||
let footer = CreateEmbedFooter::new(entity_name.clone());
|
let footer = CreateEmbedFooter::new(entity_name.clone());
|
||||||
|
match check_if_server_enable_and_user_admin(guild.get(), ctx.author().id.get(), ctx.http())
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok((ok, _)) => {
|
||||||
|
if !ok {
|
||||||
|
let embed = CreateEmbed::new()
|
||||||
|
.title("You are not an admin")
|
||||||
|
.color(colour::Color::RED)
|
||||||
|
.footer(footer);
|
||||||
|
if let Err(why) = ctx
|
||||||
|
.send(CreateReply::default().embed(embed).ephemeral(true))
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
tracing::error!("Error sending message: {:?}", why);
|
||||||
|
}
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(_) => {
|
||||||
|
let embed = CreateEmbed::new()
|
||||||
|
.title("You are not an admin")
|
||||||
|
.color(colour::Color::RED)
|
||||||
|
.footer(footer);
|
||||||
|
if let Err(why) = ctx
|
||||||
|
.send(CreateReply::default().embed(embed).ephemeral(true))
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
tracing::error!("Error sending message: {:?}", why);
|
||||||
|
}
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
let answer = match get_server_config(guild.get()).await {
|
let answer = match get_server_config(guild.get()).await {
|
||||||
Ok(config) => match config {
|
Ok(config) => match config {
|
||||||
Some(server_config) => {
|
Some(server_config) => {
|
||||||
|
@ -41,7 +41,7 @@ pub async fn check_if_concour_allowed(
|
|||||||
pub async fn check_if_allowed(
|
pub async fn check_if_allowed(
|
||||||
server_id: u64,
|
server_id: u64,
|
||||||
user_id: u64,
|
user_id: u64,
|
||||||
http: serenity_prelude::Http,
|
http: &serenity_prelude::Http,
|
||||||
) -> Result<bool, CheckIfConcourEnable> {
|
) -> Result<bool, CheckIfConcourEnable> {
|
||||||
if let Ok((enable, server_config)) =
|
if let Ok((enable, server_config)) =
|
||||||
check_if_server_enable_and_user_admin(server_id, user_id, http).await
|
check_if_server_enable_and_user_admin(server_id, user_id, http).await
|
||||||
|
@ -7,7 +7,7 @@ use tracing::instrument;
|
|||||||
pub async fn check_if_server_enable_and_user_admin(
|
pub async fn check_if_server_enable_and_user_admin(
|
||||||
server_id: u64,
|
server_id: u64,
|
||||||
user_id: u64,
|
user_id: u64,
|
||||||
http: serenity_prelude::Http,
|
http: &serenity_prelude::Http,
|
||||||
) -> Result<(bool, Option<ServerConfig>), CheckIfServerEnableError> {
|
) -> Result<(bool, Option<ServerConfig>), CheckIfServerEnableError> {
|
||||||
let server_config = match check_if_server_enable(server_id).await {
|
let server_config = match check_if_server_enable(server_id).await {
|
||||||
Ok((status, config)) => {
|
Ok((status, config)) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user