Files
shadowbot/src/commands/mod.rs
T
Puechberty Arthur 3e69185296 feat(events): add message update, role, and voice state update handlers
- Implemented `handle_message_update` to log message edits.
- Created role event handlers for role creation, update, and deletion.
- Added voice state update handling to log channel changes.
- Introduced a new `ready_event` handler to restore bot presence and enforce blacklist.
- Updated `mod.rs` to include new event modules.
- Enhanced `main.rs` for database connection and initialization.
- Added comprehensive permission management in `permissions.rs`.
2026-04-10 02:13:04 +02:00

292 lines
8.9 KiB
Rust

use crate::commands::command_contract::{CommandMetadata, CommandSpec};
pub mod addrole;
pub mod admin_common;
pub mod admin_service;
pub mod advanced_tools;
pub mod alias;
pub mod alladmins;
pub mod allbots;
pub mod allperms;
pub mod autobackup;
pub mod autoconfiglog;
pub mod autoreact;
pub mod backup;
pub mod ban;
pub mod banlist;
pub mod banner;
pub mod bl;
pub mod blinfo;
pub mod boostembed;
pub mod boosters;
pub mod boostlog;
pub mod botadmins;
pub mod botconfig_common;
pub mod botconfig_service;
pub mod bringall;
pub mod button;
pub mod calc;
pub mod change;
pub mod changeall;
pub mod channel;
pub mod choose;
pub mod cleanup;
pub mod clear_all_sanctions;
pub mod clear_bl;
pub mod clear_messages;
pub mod clear_owners;
pub mod clear_perms;
pub mod clear_sanctions;
pub mod cmute;
pub mod command_contract;
pub mod common;
pub mod compet;
pub mod create;
pub mod del;
pub mod del_sanction;
pub mod delrole;
pub mod derank;
pub mod discussion;
pub mod dnd;
pub mod embed;
pub mod emoji;
pub mod end;
pub mod giveaway;
pub mod help;
pub mod helpsetting;
pub mod hide;
pub mod hideall;
pub mod idle;
pub mod invisible;
pub mod invite;
pub mod join;
pub mod kick;
pub mod leave;
pub mod leave_settings;
pub mod listen;
pub mod loading;
pub mod lock;
pub mod lockall;
pub mod logs_service;
pub mod mainprefix;
pub mod massiverole;
pub mod member;
pub mod messagelog;
pub mod moderation_tools;
pub mod modlog;
pub mod mp;
pub mod mute;
pub mod mutelist;
pub mod newsticker;
pub mod nolog;
pub mod online;
pub mod owner;
pub mod perms;
pub mod perms_service;
pub mod pic;
pub mod ping;
pub mod playto;
pub mod prefix;
pub mod raidlog;
pub mod remove_activity;
pub mod renew;
pub mod reroll;
pub mod role;
pub mod rolelog;
pub mod rolemembers;
pub mod sanctions;
pub mod say;
pub mod server;
pub mod serverinfo;
pub mod set;
pub mod set_boostembed;
pub mod set_modlogs;
pub mod shadowbot;
pub mod snipe;
pub mod stream;
pub mod sync;
pub mod tempban;
pub mod tempcmute;
pub mod tempmute;
pub mod temprole;
pub mod theme;
pub mod unban;
pub mod unbanall;
pub mod unbl;
pub mod uncmute;
pub mod unhide;
pub mod unhideall;
pub mod unlock;
pub mod unlockall;
pub mod unmassiverole;
pub mod unmute;
pub mod unmuteall;
pub mod unowner;
pub mod untemprole;
pub mod user;
pub mod viewlogs;
pub mod vocinfo;
pub mod voicekick;
pub mod ticket;
pub mod tickets;
pub mod showpics;
pub mod suggestion;
pub mod autopublish;
pub mod tempvoc;
pub mod tempvoc_cmd;
pub mod voicelog;
pub mod voicemove;
pub mod warn;
pub mod claim;
pub mod close;
pub mod rename;
pub mod ticket_member;
pub mod watch;
pub fn all_command_metadata() -> Vec<CommandMetadata> {
vec![
ping::COMMAND_DESCRIPTOR.metadata(),
allbots::COMMAND_DESCRIPTOR.metadata(),
alladmins::COMMAND_DESCRIPTOR.metadata(),
botadmins::COMMAND_DESCRIPTOR.metadata(),
boosters::COMMAND_DESCRIPTOR.metadata(),
rolemembers::COMMAND_DESCRIPTOR.metadata(),
serverinfo::COMMAND_DESCRIPTOR.metadata(),
vocinfo::COMMAND_DESCRIPTOR.metadata(),
role::COMMAND_DESCRIPTOR.metadata(),
join::COMMAND_DESCRIPTOR.metadata(),
channel::COMMAND_DESCRIPTOR.metadata(),
user::COMMAND_DESCRIPTOR.metadata(),
member::COMMAND_DESCRIPTOR.metadata(),
pic::COMMAND_DESCRIPTOR.metadata(),
banner::COMMAND_DESCRIPTOR.metadata(),
server::COMMAND_DESCRIPTOR.metadata(),
snipe::COMMAND_DESCRIPTOR.metadata(),
emoji::COMMAND_DESCRIPTOR.metadata(),
giveaway::COMMAND_DESCRIPTOR.metadata(),
modlog::COMMAND_DESCRIPTOR.metadata(),
messagelog::COMMAND_DESCRIPTOR.metadata(),
voicelog::COMMAND_DESCRIPTOR.metadata(),
boostlog::COMMAND_DESCRIPTOR.metadata(),
rolelog::COMMAND_DESCRIPTOR.metadata(),
raidlog::COMMAND_DESCRIPTOR.metadata(),
autoconfiglog::COMMAND_DESCRIPTOR.metadata(),
boostembed::COMMAND_DESCRIPTOR.metadata(),
nolog::COMMAND_DESCRIPTOR.metadata(),
set_modlogs::COMMAND_DESCRIPTOR.metadata(),
set_boostembed::COMMAND_DESCRIPTOR.metadata(),
sanctions::COMMAND_DESCRIPTOR.metadata(),
end::COMMAND_DESCRIPTOR.metadata(),
reroll::COMMAND_DESCRIPTOR.metadata(),
choose::COMMAND_DESCRIPTOR.metadata(),
embed::COMMAND_DESCRIPTOR.metadata(),
clear_messages::COMMAND_DESCRIPTOR.metadata(),
backup::COMMAND_DESCRIPTOR.metadata(),
autobackup::COMMAND_DESCRIPTOR.metadata(),
loading::COMMAND_DESCRIPTOR.metadata(),
create::COMMAND_DESCRIPTOR.metadata(),
newsticker::COMMAND_DESCRIPTOR.metadata(),
massiverole::COMMAND_DESCRIPTOR.metadata(),
unmassiverole::COMMAND_DESCRIPTOR.metadata(),
voicemove::COMMAND_DESCRIPTOR.metadata(),
voicekick::COMMAND_DESCRIPTOR.metadata(),
cleanup::COMMAND_DESCRIPTOR.metadata(),
bringall::COMMAND_DESCRIPTOR.metadata(),
renew::COMMAND_DESCRIPTOR.metadata(),
unbanall::COMMAND_DESCRIPTOR.metadata(),
warn::COMMAND_DESCRIPTOR.metadata(),
mute::COMMAND_DESCRIPTOR.metadata(),
tempmute::COMMAND_DESCRIPTOR.metadata(),
unmute::COMMAND_DESCRIPTOR.metadata(),
cmute::COMMAND_DESCRIPTOR.metadata(),
tempcmute::COMMAND_DESCRIPTOR.metadata(),
uncmute::COMMAND_DESCRIPTOR.metadata(),
mutelist::COMMAND_DESCRIPTOR.metadata(),
unmuteall::COMMAND_DESCRIPTOR.metadata(),
kick::COMMAND_DESCRIPTOR.metadata(),
ban::COMMAND_DESCRIPTOR.metadata(),
tempban::COMMAND_DESCRIPTOR.metadata(),
unban::COMMAND_DESCRIPTOR.metadata(),
banlist::COMMAND_DESCRIPTOR.metadata(),
lock::COMMAND_DESCRIPTOR.metadata(),
unlock::COMMAND_DESCRIPTOR.metadata(),
lockall::COMMAND_DESCRIPTOR.metadata(),
unlockall::COMMAND_DESCRIPTOR.metadata(),
hide::COMMAND_DESCRIPTOR.metadata(),
unhide::COMMAND_DESCRIPTOR.metadata(),
hideall::COMMAND_DESCRIPTOR.metadata(),
unhideall::COMMAND_DESCRIPTOR.metadata(),
addrole::COMMAND_DESCRIPTOR.metadata(),
delrole::COMMAND_DESCRIPTOR.metadata(),
derank::COMMAND_DESCRIPTOR.metadata(),
del_sanction::COMMAND_DESCRIPTOR.metadata(),
clear_sanctions::COMMAND_DESCRIPTOR.metadata(),
clear_all_sanctions::COMMAND_DESCRIPTOR.metadata(),
temprole::COMMAND_DESCRIPTOR.metadata(),
untemprole::COMMAND_DESCRIPTOR.metadata(),
sync::COMMAND_DESCRIPTOR.metadata(),
button::COMMAND_DESCRIPTOR.metadata(),
autoreact::COMMAND_DESCRIPTOR.metadata(),
calc::COMMAND_DESCRIPTOR.metadata(),
shadowbot::COMMAND_DESCRIPTOR.metadata(),
set::COMMAND_DESCRIPTOR.metadata(),
theme::COMMAND_DESCRIPTOR.metadata(),
playto::COMMAND_DESCRIPTOR.metadata(),
listen::COMMAND_DESCRIPTOR.metadata(),
watch::COMMAND_DESCRIPTOR.metadata(),
compet::COMMAND_DESCRIPTOR.metadata(),
stream::COMMAND_DESCRIPTOR.metadata(),
remove_activity::COMMAND_DESCRIPTOR.metadata(),
online::COMMAND_DESCRIPTOR.metadata(),
idle::COMMAND_DESCRIPTOR.metadata(),
dnd::COMMAND_DESCRIPTOR.metadata(),
invisible::COMMAND_DESCRIPTOR.metadata(),
owner::COMMAND_DESCRIPTOR.metadata(),
unowner::COMMAND_DESCRIPTOR.metadata(),
clear_owners::COMMAND_DESCRIPTOR.metadata(),
bl::COMMAND_DESCRIPTOR.metadata(),
unbl::COMMAND_DESCRIPTOR.metadata(),
blinfo::COMMAND_DESCRIPTOR.metadata(),
clear_bl::COMMAND_DESCRIPTOR.metadata(),
say::COMMAND_DESCRIPTOR.metadata(),
change::COMMAND_DESCRIPTOR.metadata(),
changeall::COMMAND_DESCRIPTOR.metadata(),
mainprefix::COMMAND_DESCRIPTOR.metadata(),
prefix::COMMAND_DESCRIPTOR.metadata(),
perms::COMMAND_DESCRIPTOR.metadata(),
del::COMMAND_DESCRIPTOR.metadata(),
clear_perms::COMMAND_DESCRIPTOR.metadata(),
allperms::COMMAND_DESCRIPTOR.metadata(),
help::COMMAND_DESCRIPTOR.metadata(),
helpsetting::COMMAND_DESCRIPTOR.metadata(),
alias::COMMAND_DESCRIPTOR.metadata(),
mp::COMMAND_DESCRIPTOR.metadata(),
invite::COMMAND_DESCRIPTOR.metadata(),
leave::COMMAND_DESCRIPTOR.metadata(),
leave_settings::COMMAND_DESCRIPTOR.metadata(),
viewlogs::COMMAND_DESCRIPTOR.metadata(),
discussion::COMMAND_DESCRIPTOR.metadata(),
]
}
pub fn command_metadata_by_key(key: &str) -> Option<CommandMetadata> {
all_command_metadata()
.into_iter()
.find(|meta| meta.key == key)
}
pub fn resolve_default_alias(alias: &str) -> Option<&'static str> {
let normalized = alias.trim().trim_start_matches('+').to_lowercase();
all_command_metadata().into_iter().find_map(|meta| {
if meta
.default_aliases
.iter()
.any(|candidate| candidate.eq_ignore_ascii_case(&normalized))
{
Some(meta.key)
} else {
None
}
})
}