use serde_json::Value; use std::collections::{BTreeMap, HashMap}; use std::sync::Arc; use super::context::Context; use ::model::event::{ ChannelPinsAckEvent, ChannelPinsUpdateEvent, GuildSyncEvent, MessageUpdateEvent, PresenceUpdateEvent, ResumedEvent, TypingStartEvent, VoiceServerUpdateEvent, }; use ::model::*; #[cfg(not(feature="cache"))] use ::model::event::{ CallUpdateEvent, GuildMemberUpdateEvent, UserSettingsUpdateEvent, }; // This should use type macros when stable receives the type macro // stabilization patch. // // This implementation should be: // // ```rust,ignore // macro_rules! efn { // ($def:ty) => { // Option + Send + Sync + 'static>> // } // } // ``` // // Where each field will look like: // // ```rust,ignore // pub something: efn!(Fn(Context, ...)), // ``` #[allow(type_complexity)] #[derive(Default)] pub struct EventStore { pub on_call_create: Option>, #[cfg(feature="cache")] pub on_call_delete: Option) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_call_delete: Option>, #[cfg(feature="cache")] pub on_call_update: Option, Option) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_call_update: Option>, pub on_channel_create: Option>, pub on_channel_delete: Option>, pub on_channel_pins_ack: Option>, pub on_channel_pins_update: Option>, pub on_channel_recipient_addition: Option>, pub on_channel_recipient_removal: Option>, #[cfg(feature="cache")] pub on_channel_update: Option, Channel) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_channel_update: Option>, pub on_friend_suggestion_create: Option) + Send + Sync + 'static>>, pub on_friend_suggestion_delete: Option>, pub on_guild_ban_addition: Option>, pub on_guild_ban_removal: Option>, pub on_guild_create: Option>, #[cfg(feature="cache")] pub on_guild_delete: Option) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_delete: Option>, pub on_guild_emojis_update: Option) + Send + Sync + 'static>>, pub on_guild_integrations_update: Option>, pub on_guild_member_addition: Option>, #[cfg(feature="cache")] pub on_guild_member_removal: Option) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_member_removal: Option>, #[cfg(feature="cache")] pub on_guild_member_update: Option, Member) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_member_update: Option>, pub on_guild_members_chunk: Option) + Send + Sync + 'static>>, pub on_guild_role_create: Option>, #[cfg(feature="cache")] pub on_guild_role_delete: Option) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_role_delete: Option>, #[cfg(feature="cache")] pub on_guild_role_update: Option, Role) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_role_update: Option>, pub on_guild_sync: Option>, pub on_guild_unavailable: Option>, #[cfg(feature="cache")] pub on_guild_update: Option, PartialGuild) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_guild_update: Option>, pub on_message: Option>, pub on_message_ack: Option) + Send + Sync + 'static>>, pub on_message_delete: Option>, pub on_message_delete_bulk: Option) + Send + Sync + 'static>>, pub on_reaction_add: Option>, pub on_reaction_remove: Option>, pub on_reaction_remove_all: Option>, pub on_message_update: Option>, #[cfg(feature="cache")] pub on_note_update: Option, String) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_note_update: Option>, pub on_presence_replace: Option) + Send + Sync + 'static>>, pub on_presence_update: Option>, pub on_ready: Option>, pub on_relationship_addition: Option>, pub on_relationship_removal: Option>, pub on_resume: Option>, pub on_typing_start: Option>, pub on_unknown: Option) + Send + Sync + 'static>>, #[cfg(feature="cache")] pub on_user_guild_settings_update: Option, UserGuildSettings) + Send + Sync + 'static>>, #[cfg(not(feature="cache"))] pub on_user_guild_settings_update: Option>, #[cfg(feature="cache")] pub on_user_update: Option>, #[cfg(not(feature="cache"))] pub on_user_update: Option>, #[cfg(feature="cache")] pub on_user_settings_update: Option>, #[cfg(not(feature="cache"))] pub on_user_settings_update: Option>, pub on_voice_server_update: Option>, pub on_voice_state_update: Option, VoiceState) + Send + Sync + 'static>>, pub on_webhook_update: Option>, }