mirror of
https://github.com/arthur-pbty/shadowbot.git
synced 2026-06-04 15:56:31 +02:00
3e69185296
- 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`.
126 lines
3.7 KiB
Rust
126 lines
3.7 KiB
Rust
use serenity::async_trait;
|
|
use serenity::model::prelude::*;
|
|
use serenity::prelude::*;
|
|
|
|
use crate::events::{
|
|
channel_event, guild_create_event, guild_member_event, interaction_create_event,
|
|
message_delete_event, message_event, message_update_event, ready_event, role_event,
|
|
voice_state_update_event,
|
|
};
|
|
|
|
pub struct Handler;
|
|
|
|
#[async_trait]
|
|
impl EventHandler for Handler {
|
|
async fn ready(&self, ctx: Context, ready: Ready) {
|
|
ready_event::handle_ready(&ctx, &ready).await;
|
|
}
|
|
|
|
async fn message(&self, ctx: Context, msg: Message) {
|
|
message_event::handle_message(&ctx, &msg).await;
|
|
}
|
|
|
|
async fn guild_create(&self, ctx: Context, guild: Guild, _is_new: Option<bool>) {
|
|
guild_create_event::handle_guild_create(&ctx, &guild).await;
|
|
}
|
|
|
|
async fn interaction_create(&self, ctx: Context, interaction: Interaction) {
|
|
interaction_create_event::handle_interaction_create(&ctx, &interaction).await;
|
|
}
|
|
|
|
async fn message_delete(
|
|
&self,
|
|
ctx: Context,
|
|
channel_id: ChannelId,
|
|
deleted_message_id: MessageId,
|
|
guild_id: Option<GuildId>,
|
|
) {
|
|
message_delete_event::handle_message_delete(&ctx, channel_id, deleted_message_id, guild_id)
|
|
.await;
|
|
}
|
|
|
|
async fn message_update(
|
|
&self,
|
|
ctx: Context,
|
|
old_if_available: Option<Message>,
|
|
new: Option<Message>,
|
|
event: MessageUpdateEvent,
|
|
) {
|
|
message_update_event::handle_message_update(&ctx, old_if_available, new, &event).await;
|
|
}
|
|
|
|
async fn voice_state_update(&self, ctx: Context, old: Option<VoiceState>, new: VoiceState) {
|
|
voice_state_update_event::handle_voice_state_update(&ctx, old, &new).await;
|
|
}
|
|
|
|
async fn guild_member_addition(&self, ctx: Context, new_member: Member) {
|
|
guild_member_event::handle_member_addition(&ctx, &new_member).await;
|
|
}
|
|
|
|
async fn guild_member_removal(
|
|
&self,
|
|
ctx: Context,
|
|
guild_id: GuildId,
|
|
user: User,
|
|
_member_data_if_available: Option<Member>,
|
|
) {
|
|
guild_member_event::handle_member_removal(&ctx, guild_id, &user).await;
|
|
}
|
|
|
|
async fn guild_member_update(
|
|
&self,
|
|
ctx: Context,
|
|
old_if_available: Option<Member>,
|
|
new: Option<Member>,
|
|
event: GuildMemberUpdateEvent,
|
|
) {
|
|
guild_member_event::handle_member_update(&ctx, old_if_available, new, &event).await;
|
|
}
|
|
|
|
async fn guild_role_create(&self, ctx: Context, new: Role) {
|
|
role_event::handle_role_create(&ctx, &new).await;
|
|
}
|
|
|
|
async fn guild_role_update(
|
|
&self,
|
|
ctx: Context,
|
|
old_data_if_available: Option<Role>,
|
|
new: Role,
|
|
) {
|
|
role_event::handle_role_update(&ctx, old_data_if_available, &new).await;
|
|
}
|
|
|
|
async fn guild_role_delete(
|
|
&self,
|
|
ctx: Context,
|
|
guild_id: GuildId,
|
|
removed_role_id: RoleId,
|
|
removed_role_data_if_available: Option<Role>,
|
|
) {
|
|
role_event::handle_role_delete(
|
|
&ctx,
|
|
guild_id,
|
|
removed_role_id,
|
|
removed_role_data_if_available,
|
|
)
|
|
.await;
|
|
}
|
|
|
|
async fn channel_create(&self, ctx: Context, guild_channel: GuildChannel) {
|
|
channel_event::handle_channel_create(&ctx, &guild_channel).await;
|
|
}
|
|
|
|
async fn channel_update(&self, ctx: Context, old: Option<GuildChannel>, new: GuildChannel) {
|
|
channel_event::handle_channel_update(&ctx, old, &new).await;
|
|
}
|
|
|
|
async fn channel_delete(
|
|
&self,
|
|
ctx: Context,
|
|
channel: GuildChannel,
|
|
_messages: Option<Vec<Message>>,
|
|
) {
|
|
channel_event::handle_channel_delete(&ctx, &channel).await;
|
|
}
|
|
}
|