use crate::models::{Message, User, Guild, Channel, Presence};
use async_trait::async_trait;
#[async_trait]
pub trait EventHandler: Send + Sync {
async fn ready(&self, user: User) {}
async fn message_create(&self, message: Message) {}
async fn message_update(&self, old_message: Option<Message>, new_message: Message) {}
async fn message_delete(&self, channel_id: crate::utils::Snowflake, message_id: crate::utils::Snowflake) {}
async fn guild_create(&self, guild: Guild) {}
async fn guild_delete(&self, guild_id: crate::utils::Snowflake) {}
async fn channel_create(&self, channel: Channel) {}
async fn channel_delete(&self, channel: Channel) {}
async fn presence_update(&self, presence: Presence) {}
async fn typing_start(&self, channel_id: crate::utils::Snowflake, user_id: crate::utils::Snowflake) {}
async fn poll_vote_add(&self, user_id: crate::utils::Snowflake, channel_id: crate::utils::Snowflake, message_id: crate::utils::Snowflake, answer_id: u32) {}
async fn poll_vote_remove(&self, user_id: crate::utils::Snowflake, channel_id: crate::utils::Snowflake, message_id: crate::utils::Snowflake, answer_id: u32) {}
async fn raw(&self, _event: serde_json::Value) {}
}
pub struct DefaultEventHandler;
#[async_trait]
impl EventHandler for DefaultEventHandler {}