use super::context::Context;
use crate::gateway::event::{
ChannelPinsUpdatePayload, GuildBanAddPayload, GuildBanRemovePayload, GuildEmojisUpdatePayload,
GuildMemberUpdatePayload, GuildRoleCreatePayload, GuildRoleDeletePayload,
GuildRoleUpdatePayload, GuildStickersUpdatePayload, InviteCreatePayload, InviteDeletePayload,
MessageDeleteBulkPayload, MessageReactionAddPayload, MessageReactionRemoveAllPayload,
MessageReactionRemoveEmojiPayload, MessageReactionRemovePayload, WebhooksUpdatePayload,
};
use crate::model::channel::Channel;
use crate::model::guild::{Guild, Member};
use crate::model::id::{ChannelId, GuildId, MessageId, UserId};
use crate::model::message::Message;
use crate::model::user::User;
use async_trait::async_trait;
#[async_trait]
pub trait EventHandler: Send + Sync + 'static {
async fn ready(&self, _ctx: Context, _user: User) {}
async fn resumed(&self, _ctx: Context) {}
async fn user_update(&self, _ctx: Context, _user: User) {}
async fn message_create(&self, _ctx: Context, _message: Message) {}
async fn message_update(&self, _ctx: Context, _message: Message) {}
async fn message_delete(&self, _ctx: Context, _channel_id: ChannelId, _message_id: MessageId) {}
async fn message_delete_bulk(&self, _ctx: Context, _payload: MessageDeleteBulkPayload) {}
async fn message_reaction_add(&self, _ctx: Context, _payload: MessageReactionAddPayload) {}
async fn message_reaction_remove(&self, _ctx: Context, _payload: MessageReactionRemovePayload) {
}
async fn message_reaction_remove_all(
&self,
_ctx: Context,
_payload: MessageReactionRemoveAllPayload,
) {
}
async fn message_reaction_remove_emoji(
&self,
_ctx: Context,
_payload: MessageReactionRemoveEmojiPayload,
) {
}
async fn guild_create(&self, _ctx: Context, _guild: Guild) {}
async fn guild_update(&self, _ctx: Context, _guild: Guild) {}
async fn guild_delete(&self, _ctx: Context, _guild_id: GuildId) {}
async fn guild_member_add(&self, _ctx: Context, _guild_id: GuildId, _member: Member) {}
async fn guild_member_update(&self, _ctx: Context, _payload: GuildMemberUpdatePayload) {}
async fn guild_member_remove(&self, _ctx: Context, _guild_id: GuildId, _user: User) {}
async fn guild_role_create(&self, _ctx: Context, _payload: GuildRoleCreatePayload) {}
async fn guild_role_update(&self, _ctx: Context, _payload: GuildRoleUpdatePayload) {}
async fn guild_role_delete(&self, _ctx: Context, _payload: GuildRoleDeletePayload) {}
async fn guild_ban_add(&self, _ctx: Context, _payload: GuildBanAddPayload) {}
async fn guild_ban_remove(&self, _ctx: Context, _payload: GuildBanRemovePayload) {}
async fn channel_create(&self, _ctx: Context, _channel: Channel) {}
async fn channel_update(&self, _ctx: Context, _channel: Channel) {}
async fn channel_delete(&self, _ctx: Context, _channel: Channel) {}
async fn channel_pins_update(&self, _ctx: Context, _payload: ChannelPinsUpdatePayload) {}
async fn typing_start(&self, _ctx: Context, _channel_id: ChannelId, _user_id: UserId) {}
async fn invite_create(&self, _ctx: Context, _payload: InviteCreatePayload) {}
async fn invite_delete(&self, _ctx: Context, _payload: InviteDeletePayload) {}
async fn webhooks_update(&self, _ctx: Context, _payload: WebhooksUpdatePayload) {}
async fn guild_emojis_update(&self, _ctx: Context, _payload: GuildEmojisUpdatePayload) {}
async fn guild_stickers_update(&self, _ctx: Context, _payload: GuildStickersUpdatePayload) {}
}