mirror of
https://github.com/arthur-pbty/shadowbot.git
synced 2026-06-03 23:36:25 +02:00
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`.
This commit is contained in:
@@ -0,0 +1,291 @@
|
||||
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
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user