Refactor command handling and permissions management

- Updated examples formatting in SetpermCommand and LeaveSettingsCommand for consistency.
- Consolidated the handling of guild targets into a new utility file (servertarget.rs).
- Moved the del command logic to a new utility file (del.rs) for better organization.
- Enhanced the set command functionalities by creating a dedicated set.rs file, improving readability and maintainability.
- Removed deprecated servertarget.rs and del.rs files from the commands directory.
- Improved the help command structure for better readability and maintainability.
- Added new utility files for permissions and server target handling to streamline command processing.
This commit is contained in:
Puechberty Arthur
2026-04-10 18:03:55 +02:00
parent 00ae9cda11
commit 313ecc7d0c
16 changed files with 91 additions and 98 deletions
+3 -1
View File
@@ -45,7 +45,9 @@ pub async fn handle_alias(ctx: &Context, msg: &Message, args: &[&str]) {
}
let command = args[0].trim_start_matches('+').to_lowercase();
let is_known = all_command_keys().iter().any(|candidate| candidate == &command)
let is_known = all_command_keys()
.iter()
.any(|candidate| candidate == &command)
|| crate::commands::command_metadata_by_key(&command).is_some();
if !is_known {
let embed = serenity::builder::CreateEmbed::new()
-52
View File
@@ -1,52 +0,0 @@
use serenity::builder::CreateEmbed;
use serenity::model::prelude::*;
use serenity::prelude::*;
use crate::commands::common::send_embed;
use crate::commands::perms_helpers::{ensure_owner, get_pool, parse_user_or_role};
use crate::db::remove_scope_permissions;
pub async fn handle_del(ctx: &Context, msg: &Message, args: &[&str]) {
if !ensure_owner(ctx, msg).await {
return;
}
if args.is_empty() {
let embed = CreateEmbed::new()
.title("Erreur")
.description("Usage: `+delperm <role/membre>`")
.color(0xED4245);
send_embed(ctx, msg, embed).await;
return;
}
let Some((scope_type, scope_id)) = parse_user_or_role(args[0]) else {
let embed = CreateEmbed::new()
.title("Erreur")
.description("Role/membre invalide.")
.color(0xED4245);
send_embed(ctx, msg, embed).await;
return;
};
let bot_id = ctx.cache.current_user().id;
let Some(pool) = get_pool(ctx).await else {
let embed = CreateEmbed::new()
.title("Erreur")
.description("DB indisponible.")
.color(0xED4245);
send_embed(ctx, msg, embed).await;
return;
};
let removed = remove_scope_permissions(&pool, bot_id, scope_type, scope_id)
.await
.unwrap_or(0);
let embed = CreateEmbed::new()
.title("Permissions supprimees")
.description(format!("{} entree(s) supprimee(s).", removed))
.color(0x57F287);
send_embed(ctx, msg, embed).await;
}
+12 -38
View File
@@ -135,28 +135,10 @@ fn help_page_for_command(
"modlog" | "messagelog" | "voicelog" | "boostlog" | "rolelog" | "raidlog"
| "autoconfiglog" | "nolog" | "joinsettings" | "boostembed" | "setmodlogs"
| "setboostembed" | "leavesettings" | "viewlogs" => "logs",
"warn"
| "mute"
| "tempmute"
| "unmute"
| "cmute"
| "tempcmute"
| "uncmute"
| "mutelist"
| "unmuteall"
| "kick"
| "ban"
| "tempban"
| "unban"
| "banlist"
| "unbanall"
| "sanctions"
| "delsanction"
| "clearsanctions"
| "clearallsanctions"
| "cleanup"
| "renew"
| "clearmessages" => "moderation",
"warn" | "mute" | "tempmute" | "unmute" | "cmute" | "tempcmute" | "uncmute"
| "mutelist" | "unmuteall" | "kick" | "ban" | "tempban" | "unban" | "banlist"
| "unbanall" | "sanctions" | "delsanction" | "clearsanctions" | "clearallsanctions"
| "cleanup" | "renew" | "clearmessages" => "moderation",
"addrole" | "delrole" | "derank" | "massiverole" | "unmassiverole" | "temprole"
| "untemprole" | "sync" => "roles",
"lock" | "unlock" | "lockall" | "unlockall" | "hide" | "unhide" | "hideall"
@@ -164,19 +146,13 @@ fn help_page_for_command(
"giveaway" | "end" | "reroll" | "choose" | "calc" | "emoji" | "embed" | "say"
| "create" | "newsticker" | "button" | "autoreact" | "snipe" | "loading" | "backup"
| "autobackup" => "outils",
"shadowbot" | "setname" | "setpic" | "setbanner" | "setprofil" | "setperm"
| "theme" | "playto" | "listen" | "watch" | "compet" | "stream"
| "removeactivity" | "online" | "idle" | "dnd" | "invisible" | "change"
| "changereset" | "changeall" => {
"bot"
}
"owner" | "unowner" | "clearowners" | "bl" | "unbl" | "blinfo" | "clearbl"
| "allbots" | "alladmins" | "botadmins" | "mainprefix" | "prefix" | "mp"
| "mpsettings" | "mpsent" | "mpdelete" | "invite" | "leave" | "discussion" => {
"administration"
}
"perms" | "delperm" | "clearperms" | "allperms" | "alias" | "help"
| "helpsetting" => {
"shadowbot" | "setname" | "setpic" | "setbanner" | "setprofil" | "setperm" | "theme"
| "playto" | "listen" | "watch" | "compet" | "stream" | "removeactivity" | "online"
| "idle" | "dnd" | "invisible" | "change" | "changereset" | "changeall" => "bot",
"owner" | "unowner" | "clearowners" | "bl" | "unbl" | "blinfo" | "clearbl" | "allbots"
| "alladmins" | "botadmins" | "mainprefix" | "prefix" | "mp" | "mpsettings" | "mpsent"
| "mpdelete" | "invite" | "leave" | "discussion" => "administration",
"perms" | "delperm" | "clearperms" | "allperms" | "alias" | "help" | "helpsetting" => {
"permissions"
}
_ => match meta.category {
@@ -410,9 +386,7 @@ fn help_lookup_to_key(input: &str) -> Option<&'static str> {
"newsticker" => Some("newsticker"),
"piconly" => Some("piconly"),
"piconly add" | "piconlyadd" => Some("piconlyadd"),
"piconly del" | "piconly remove" | "piconly delete" | "piconlydel" => {
Some("piconlydel")
}
"piconly del" | "piconly remove" | "piconly delete" | "piconlydel" => Some("piconlydel"),
"massiverole" => Some("massiverole"),
"unmassiverole" => Some("unmassiverole"),
"noderank" => Some("noderank"),