Implementation
late final Map<String, Future? Function(DiscordClient, dynamic)>
eventHandlers = {
'READY': (c, d) => onReady?.call(c, Ready.fromJson(d)),
'CHANNEL_CREATE': (c, d) => onChannelCreate?.call(c, Channel.fromJson(d)),
'CHANNEL_UPDATE': (c, d) => onChannelUpdate?.call(c, Channel.fromJson(d)),
'CHANNEL_DELETE': (c, d) => onChannelDelete?.call(c, Channel.fromJson(d)),
'CHANNEL_PINS_UPDATE': (c, d) {
return onChannelPinsUpdate?.call(
c,
ChannelPinsUpdateEvent.fromJson(d),
);
},
'GUILD_CREATE': (c, d) => onGuildCreate?.call(c, Guild.fromJson(d)),
'GUILD_UPDATE': (c, d) => onGuildUpdate?.call(c, Guild.fromJson(d)),
'GUILD_DELETE': (c, d) => onGuildDelete?.call(c, Guild.fromJson(d)),
'GUILD_BAN_ADD': (c, d) =>
onGuildBanAdd?.call(c, GuildBanAddEvent.fromJson(d)),
'GUILD_BAN_REMOVE': (c, d) =>
onGuildBanRemove?.call(c, GuildBanRemoveEvent.fromJson(d)),
'GUILD_EMOJI_UPDATE': (c, d) =>
onGuildEmojiUpdate?.call(c, GuildEmojiUpdateEvent.fromJson(d)),
'GUILD_INTEGRATIONS_UPDATE': (c, d) => onGuildIntegrationsUpdate?.call(
c, GuildIntegrationsUpdateEvent.fromJson(d)),
'GUILD_MEMBER_ADD': (c, d) => onGuildMemberAdd?.call(c, Member.fromJson(d)),
'GUILD_MEMBER_REMOVE': (c, d) =>
onGuildMemberRemove?.call(c, GuildMemberRemoveEvent.fromJson(d)),
'GUILD_MEMBER_UPDATE': (c, d) =>
onGuildMemberUpdate?.call(c, GuildMemberUpdateEvent.fromJson(d)),
'GUILD_MEMBERS_CHUNK': (c, d) =>
onGuildMembersChunk?.call(c, GuildMembersChunkEvent.fromJson(d)),
'GUILD_ROLE_CREATE': (c, d) =>
onGuildRoleCreate?.call(c, GuildRoleCreateEvent.fromJson(d)),
'GUILD_ROLE_UPDATE': (c, d) =>
onGuildRoleUpdate?.call(c, GuildRoleUpdateEvent.fromJson(d)),
'GUILD_ROLE_DELETE': (c, d) =>
onGuildRoleDelete?.call(c, GuildRoleDeleteEvent.fromJson(d)),
'INVITE_CREATE': (c, d) =>
onInviteCreate?.call(c, InviteCreateEvent.fromJson(d)),
'INVITE_DELETE': (c, d) =>
onInviteDelete?.call(c, InviteDeleteEvent.fromJson(d)),
'MESSAGE_CREATE': (c, d) => onMessageCreate?.call(c, Message.fromJson(d)),
'MESSAGE_DELETE': (c, d) =>
onMessageDelete?.call(c, MessageDeleteEvent.fromJson(d)),
'MESSAGE_DELETE_BULK': (c, d) =>
onMessageDeleteBulk?.call(c, MessageDeleteBulkEvent.fromJson(d)),
'MESSAGE_REACTION_ADD': (c, d) =>
onMessageReactionAdd?.call(c, MessageReactionAddEvent.fromJson(d)),
'MESSAGE_REACTION_REMOVE': (c, d) => onMessageReactionRemove?.call(
c, MessageReactionRemoveEvent.fromJson(d)),
'MESSAGE_REACTION_REMOVE_ALL': (c, d) => onMessageReactionRemoveAll?.call(
c, MessageReactionRemoveAllEvent.fromJson(d)),
'MESSAGE_REACTION_REMOVE_EMOJI': (c, d) => onMessageReactionRemoveEmoji
?.call(c, MessageReactionRemoveEmojiEvent.fromJson(d)),
'PRESENCE_UPDATE': (c, d) =>
onPresenceUpdate?.call(c, PresenceUpdateEvent.fromJson(d)),
'TYPING_START': (c, d) =>
onTypingStart?.call(c, TypingStartEvent.fromJson(d)),
'USER_UPDATE': (c, d) => onUserUpdate?.call(c, User.fromJson(d)),
'VOICE_STATE_UPDATE': (c, d) =>
onVoiceStateUpdate?.call(c, VoiceState.fromJson(d)),
'VOICE_SERVER_UPDATE': (c, d) =>
onVoiceServerUpdate?.call(c, VoiceServerUpdateEvent.fromJson(d)),
'WEBHOOK_UPDATE': (c, d) =>
onWebhookUpdate?.call(c, WebhookUpdateEvent.fromJson(d)),
'APPLICATION_COMMAND_CREATE': (c, d) =>
onApplicationCommandCreate?.call(c, ApplicationCommand.fromJson(d)),
'APPLICATION_COMMAND_UPDATE': (c, d) =>
onApplicationCommandUpdate?.call(c, ApplicationCommand.fromJson(d)),
'APPLICATION_COMMAND_DELETE': (c, d) =>
onApplicationCommandDelete?.call(c, ApplicationCommand.fromJson(d)),
'INTERACTION_CREATE': (c, d) =>
onInteractionCreate?.call(c, Interaction.fromJson(c.clientIndex, d)),
};