1use super::{super::payload::incoming::*, Event, EventConversionError, EventType};
2use serde::{
3 Serialize,
4 de::{Deserialize, DeserializeSeed, Deserializer, Error as DeError, IgnoredAny},
5};
6
7#[derive(Clone, Debug, PartialEq, Serialize)]
15#[serde(untagged)]
16pub enum DispatchEvent {
17 AutoModerationActionExecution(AutoModerationActionExecution),
18 AutoModerationRuleCreate(AutoModerationRuleCreate),
19 AutoModerationRuleDelete(AutoModerationRuleDelete),
20 AutoModerationRuleUpdate(AutoModerationRuleUpdate),
21 BanAdd(BanAdd),
22 BanRemove(BanRemove),
23 ChannelCreate(Box<ChannelCreate>),
24 ChannelDelete(Box<ChannelDelete>),
25 ChannelPinsUpdate(ChannelPinsUpdate),
26 ChannelUpdate(Box<ChannelUpdate>),
27 CommandPermissionsUpdate(CommandPermissionsUpdate),
28 EntitlementCreate(EntitlementCreate),
29 EntitlementDelete(EntitlementDelete),
30 EntitlementUpdate(EntitlementUpdate),
31 GuildAuditLogEntryCreate(Box<GuildAuditLogEntryCreate>),
32 GuildCreate(Box<GuildCreate>),
33 GuildDelete(GuildDelete),
34 GuildEmojisUpdate(GuildEmojisUpdate),
35 GuildIntegrationsUpdate(GuildIntegrationsUpdate),
36 GuildScheduledEventCreate(Box<GuildScheduledEventCreate>),
37 GuildScheduledEventDelete(Box<GuildScheduledEventDelete>),
38 GuildScheduledEventUpdate(Box<GuildScheduledEventUpdate>),
39 GuildScheduledEventUserAdd(GuildScheduledEventUserAdd),
40 GuildScheduledEventUserRemove(GuildScheduledEventUserRemove),
41 GuildStickersUpdate(GuildStickersUpdate),
42 GuildUpdate(Box<GuildUpdate>),
43 IntegrationCreate(Box<IntegrationCreate>),
44 IntegrationDelete(IntegrationDelete),
45 IntegrationUpdate(Box<IntegrationUpdate>),
46 InteractionCreate(Box<InteractionCreate>),
47 InviteCreate(Box<InviteCreate>),
48 InviteDelete(InviteDelete),
49 MemberAdd(Box<MemberAdd>),
50 MemberRemove(MemberRemove),
51 MemberUpdate(Box<MemberUpdate>),
52 MemberChunk(MemberChunk),
53 MessageCreate(Box<MessageCreate>),
54 MessageDelete(MessageDelete),
55 MessageDeleteBulk(MessageDeleteBulk),
56 MessagePollVoteAdd(MessagePollVoteAdd),
57 MessagePollVoteRemove(MessagePollVoteRemove),
58 MessageUpdate(Box<MessageUpdate>),
59 PresenceUpdate(Box<PresenceUpdate>),
60 RateLimited(RateLimited),
61 ReactionAdd(Box<ReactionAdd>),
62 ReactionRemove(Box<ReactionRemove>),
63 ReactionRemoveAll(ReactionRemoveAll),
64 ReactionRemoveEmoji(ReactionRemoveEmoji),
65 Ready(Ready),
66 Resumed,
67 RoleCreate(RoleCreate),
68 RoleDelete(RoleDelete),
69 RoleUpdate(RoleUpdate),
70 StageInstanceCreate(StageInstanceCreate),
71 StageInstanceDelete(StageInstanceDelete),
72 StageInstanceUpdate(StageInstanceUpdate),
73 SubscriptionCreate(SubscriptionCreate),
74 SubscriptionDelete(SubscriptionDelete),
75 SubscriptionUpdate(SubscriptionUpdate),
76 ThreadCreate(Box<ThreadCreate>),
77 ThreadDelete(ThreadDelete),
78 ThreadListSync(ThreadListSync),
79 ThreadMemberUpdate(Box<ThreadMemberUpdate>),
80 ThreadMembersUpdate(ThreadMembersUpdate),
81 ThreadUpdate(Box<ThreadUpdate>),
82 TypingStart(Box<TypingStart>),
83 UnavailableGuild(UnavailableGuild),
84 UserUpdate(UserUpdate),
85 VoiceServerUpdate(VoiceServerUpdate),
86 VoiceStateUpdate(Box<VoiceStateUpdate>),
87 WebhooksUpdate(WebhooksUpdate),
88}
89
90impl DispatchEvent {
91 pub const fn kind(&self) -> EventType {
93 match self {
94 Self::AutoModerationActionExecution(_) => EventType::AutoModerationActionExecution,
95 Self::AutoModerationRuleCreate(_) => EventType::AutoModerationRuleCreate,
96 Self::AutoModerationRuleDelete(_) => EventType::AutoModerationRuleDelete,
97 Self::AutoModerationRuleUpdate(_) => EventType::AutoModerationRuleUpdate,
98 Self::BanAdd(_) => EventType::BanAdd,
99 Self::BanRemove(_) => EventType::BanRemove,
100 Self::ChannelCreate(_) => EventType::ChannelCreate,
101 Self::ChannelDelete(_) => EventType::ChannelDelete,
102 Self::ChannelPinsUpdate(_) => EventType::ChannelPinsUpdate,
103 Self::ChannelUpdate(_) => EventType::ChannelUpdate,
104 Self::CommandPermissionsUpdate(_) => EventType::CommandPermissionsUpdate,
105 Self::EntitlementCreate(_) => EventType::EntitlementCreate,
106 Self::EntitlementDelete(_) => EventType::EntitlementDelete,
107 Self::EntitlementUpdate(_) => EventType::EntitlementUpdate,
108 Self::GuildAuditLogEntryCreate(_) => EventType::GuildAuditLogEntryCreate,
109 Self::GuildCreate(_) => EventType::GuildCreate,
110 Self::GuildDelete(_) => EventType::GuildDelete,
111 Self::GuildEmojisUpdate(_) => EventType::GuildEmojisUpdate,
112 Self::GuildIntegrationsUpdate(_) => EventType::GuildIntegrationsUpdate,
113 Self::GuildScheduledEventCreate(_) => EventType::GuildScheduledEventCreate,
114 Self::GuildScheduledEventDelete(_) => EventType::GuildScheduledEventDelete,
115 Self::GuildScheduledEventUpdate(_) => EventType::GuildScheduledEventUpdate,
116 Self::GuildScheduledEventUserAdd(_) => EventType::GuildScheduledEventUserAdd,
117 Self::GuildScheduledEventUserRemove(_) => EventType::GuildScheduledEventUserRemove,
118 Self::GuildStickersUpdate(_) => EventType::GuildStickersUpdate,
119 Self::GuildUpdate(_) => EventType::GuildUpdate,
120 Self::IntegrationCreate(_) => EventType::IntegrationCreate,
121 Self::IntegrationDelete(_) => EventType::IntegrationDelete,
122 Self::IntegrationUpdate(_) => EventType::IntegrationUpdate,
123 Self::InteractionCreate(_) => EventType::InteractionCreate,
124 Self::InviteCreate(_) => EventType::InviteCreate,
125 Self::InviteDelete(_) => EventType::InviteDelete,
126 Self::MemberAdd(_) => EventType::MemberAdd,
127 Self::MemberRemove(_) => EventType::MemberRemove,
128 Self::MemberUpdate(_) => EventType::MemberUpdate,
129 Self::MemberChunk(_) => EventType::MemberChunk,
130 Self::MessageCreate(_) => EventType::MessageCreate,
131 Self::MessageDelete(_) => EventType::MessageDelete,
132 Self::MessageDeleteBulk(_) => EventType::MessageDeleteBulk,
133 Self::MessagePollVoteAdd(_) => EventType::MessagePollVoteAdd,
134 Self::MessagePollVoteRemove(_) => EventType::MessagePollVoteRemove,
135 Self::MessageUpdate(_) => EventType::MessageUpdate,
136 Self::PresenceUpdate(_) => EventType::PresenceUpdate,
137 Self::RateLimited(_) => EventType::RateLimited,
138 Self::ReactionAdd(_) => EventType::ReactionAdd,
139 Self::ReactionRemove(_) => EventType::ReactionRemove,
140 Self::ReactionRemoveAll(_) => EventType::ReactionRemoveAll,
141 Self::ReactionRemoveEmoji(_) => EventType::ReactionRemoveEmoji,
142 Self::Ready(_) => EventType::Ready,
143 Self::Resumed => EventType::Resumed,
144 Self::RoleCreate(_) => EventType::RoleCreate,
145 Self::RoleDelete(_) => EventType::RoleDelete,
146 Self::RoleUpdate(_) => EventType::RoleUpdate,
147 Self::StageInstanceCreate(_) => EventType::StageInstanceCreate,
148 Self::StageInstanceDelete(_) => EventType::StageInstanceDelete,
149 Self::StageInstanceUpdate(_) => EventType::StageInstanceUpdate,
150 Self::SubscriptionCreate(_) => EventType::SubscriptionCreate,
151 Self::SubscriptionDelete(_) => EventType::SubscriptionDelete,
152 Self::SubscriptionUpdate(_) => EventType::SubscriptionUpdate,
153 Self::ThreadCreate(_) => EventType::ThreadCreate,
154 Self::ThreadDelete(_) => EventType::ThreadDelete,
155 Self::ThreadListSync(_) => EventType::ThreadListSync,
156 Self::ThreadMemberUpdate(_) => EventType::ThreadMemberUpdate,
157 Self::ThreadMembersUpdate(_) => EventType::ThreadMembersUpdate,
158 Self::ThreadUpdate(_) => EventType::ThreadUpdate,
159 Self::TypingStart(_) => EventType::TypingStart,
160 Self::UnavailableGuild(_) => EventType::UnavailableGuild,
161 Self::UserUpdate(_) => EventType::UserUpdate,
162 Self::VoiceServerUpdate(_) => EventType::VoiceServerUpdate,
163 Self::VoiceStateUpdate(_) => EventType::VoiceStateUpdate,
164 Self::WebhooksUpdate(_) => EventType::WebhooksUpdate,
165 }
166 }
167}
168
169impl TryFrom<Event> for DispatchEvent {
170 type Error = EventConversionError;
171
172 fn try_from(event: Event) -> Result<Self, Self::Error> {
173 Ok(match event {
174 Event::AutoModerationActionExecution(v) => Self::AutoModerationActionExecution(v),
175 Event::AutoModerationRuleCreate(v) => Self::AutoModerationRuleCreate(v),
176 Event::AutoModerationRuleDelete(v) => Self::AutoModerationRuleDelete(v),
177 Event::AutoModerationRuleUpdate(v) => Self::AutoModerationRuleUpdate(v),
178 Event::BanAdd(v) => Self::BanAdd(v),
179 Event::BanRemove(v) => Self::BanRemove(v),
180 Event::ChannelCreate(v) => Self::ChannelCreate(v),
181 Event::ChannelDelete(v) => Self::ChannelDelete(v),
182 Event::ChannelPinsUpdate(v) => Self::ChannelPinsUpdate(v),
183 Event::ChannelUpdate(v) => Self::ChannelUpdate(v),
184 Event::CommandPermissionsUpdate(v) => Self::CommandPermissionsUpdate(v),
185 Event::GuildAuditLogEntryCreate(v) => Self::GuildAuditLogEntryCreate(v),
186 Event::GuildCreate(v) => Self::GuildCreate(v),
187 Event::GuildDelete(v) => Self::GuildDelete(v),
188 Event::GuildEmojisUpdate(v) => Self::GuildEmojisUpdate(v),
189 Event::GuildIntegrationsUpdate(v) => Self::GuildIntegrationsUpdate(v),
190 Event::GuildScheduledEventCreate(v) => Self::GuildScheduledEventCreate(v),
191 Event::GuildScheduledEventDelete(v) => Self::GuildScheduledEventDelete(v),
192 Event::GuildScheduledEventUpdate(v) => Self::GuildScheduledEventUpdate(v),
193 Event::GuildScheduledEventUserAdd(v) => Self::GuildScheduledEventUserAdd(v),
194 Event::GuildScheduledEventUserRemove(v) => Self::GuildScheduledEventUserRemove(v),
195 Event::GuildUpdate(v) => Self::GuildUpdate(v),
196 Event::IntegrationCreate(v) => Self::IntegrationCreate(v),
197 Event::IntegrationDelete(v) => Self::IntegrationDelete(v),
198 Event::IntegrationUpdate(v) => Self::IntegrationUpdate(v),
199 Event::InteractionCreate(v) => Self::InteractionCreate(v),
200 Event::InviteCreate(v) => Self::InviteCreate(v),
201 Event::InviteDelete(v) => Self::InviteDelete(v),
202 Event::MemberAdd(v) => Self::MemberAdd(v),
203 Event::MemberRemove(v) => Self::MemberRemove(v),
204 Event::MemberUpdate(v) => Self::MemberUpdate(v),
205 Event::MemberChunk(v) => Self::MemberChunk(v),
206 Event::MessageCreate(v) => Self::MessageCreate(v),
207 Event::MessageDelete(v) => Self::MessageDelete(v),
208 Event::MessageDeleteBulk(v) => Self::MessageDeleteBulk(v),
209 Event::MessagePollVoteAdd(v) => Self::MessagePollVoteAdd(v),
210 Event::MessagePollVoteRemove(v) => Self::MessagePollVoteRemove(v),
211 Event::MessageUpdate(v) => Self::MessageUpdate(v),
212 Event::PresenceUpdate(v) => Self::PresenceUpdate(v),
213 Event::ReactionAdd(v) => Self::ReactionAdd(v),
214 Event::ReactionRemove(v) => Self::ReactionRemove(v),
215 Event::ReactionRemoveAll(v) => Self::ReactionRemoveAll(v),
216 Event::ReactionRemoveEmoji(v) => Self::ReactionRemoveEmoji(v),
217 Event::Ready(v) => Self::Ready(v),
218 Event::Resumed => Self::Resumed,
219 Event::RoleCreate(v) => Self::RoleCreate(v),
220 Event::RoleDelete(v) => Self::RoleDelete(v),
221 Event::RoleUpdate(v) => Self::RoleUpdate(v),
222 Event::StageInstanceCreate(v) => Self::StageInstanceCreate(v),
223 Event::StageInstanceDelete(v) => Self::StageInstanceDelete(v),
224 Event::StageInstanceUpdate(v) => Self::StageInstanceUpdate(v),
225 Event::SubscriptionCreate(v) => Self::SubscriptionCreate(v),
226 Event::SubscriptionDelete(v) => Self::SubscriptionDelete(v),
227 Event::SubscriptionUpdate(v) => Self::SubscriptionUpdate(v),
228 Event::ThreadCreate(v) => Self::ThreadCreate(v),
229 Event::ThreadDelete(v) => Self::ThreadDelete(v),
230 Event::ThreadListSync(v) => Self::ThreadListSync(v),
231 Event::ThreadMemberUpdate(v) => Self::ThreadMemberUpdate(v),
232 Event::ThreadMembersUpdate(v) => Self::ThreadMembersUpdate(v),
233 Event::ThreadUpdate(v) => Self::ThreadUpdate(v),
234 Event::TypingStart(v) => Self::TypingStart(v),
235 Event::UnavailableGuild(v) => Self::UnavailableGuild(v),
236 Event::UserUpdate(v) => Self::UserUpdate(v),
237 Event::VoiceServerUpdate(v) => Self::VoiceServerUpdate(v),
238 Event::VoiceStateUpdate(v) => Self::VoiceStateUpdate(v),
239 Event::WebhooksUpdate(v) => Self::WebhooksUpdate(v),
240
241 _ => return Err(EventConversionError::new(event)),
242 })
243 }
244}
245
246#[derive(PartialEq, Eq)]
250pub struct DispatchEventWithTypeDeserializer<'a>(&'a str);
251
252impl<'a> DispatchEventWithTypeDeserializer<'a> {
253 pub const fn new(event_name: &'a str) -> Self {
255 Self(event_name)
256 }
257}
258
259impl<'de> DeserializeSeed<'de> for DispatchEventWithTypeDeserializer<'_> {
260 type Value = DispatchEvent;
261
262 #[allow(clippy::too_many_lines)]
263 fn deserialize<D: Deserializer<'de>>(self, deserializer: D) -> Result<Self::Value, D::Error> {
264 Ok(match self.0 {
265 "AUTO_MODERATION_ACTION_EXECUTION" => DispatchEvent::AutoModerationActionExecution(
266 AutoModerationActionExecution::deserialize(deserializer)?,
267 ),
268 "AUTO_MODERATION_RULE_CREATE" => DispatchEvent::AutoModerationRuleCreate(
269 AutoModerationRuleCreate::deserialize(deserializer)?,
270 ),
271 "AUTO_MODERATION_RULE_DELETE" => DispatchEvent::AutoModerationRuleDelete(
272 AutoModerationRuleDelete::deserialize(deserializer)?,
273 ),
274 "AUTO_MODERATION_RULE_UPDATE" => DispatchEvent::AutoModerationRuleUpdate(
275 AutoModerationRuleUpdate::deserialize(deserializer)?,
276 ),
277 "CHANNEL_CREATE" => {
278 DispatchEvent::ChannelCreate(Box::new(ChannelCreate::deserialize(deserializer)?))
279 }
280 "CHANNEL_DELETE" => {
281 DispatchEvent::ChannelDelete(Box::new(ChannelDelete::deserialize(deserializer)?))
282 }
283 "CHANNEL_PINS_UPDATE" => {
284 DispatchEvent::ChannelPinsUpdate(ChannelPinsUpdate::deserialize(deserializer)?)
285 }
286 "CHANNEL_UPDATE" => {
287 DispatchEvent::ChannelUpdate(Box::new(ChannelUpdate::deserialize(deserializer)?))
288 }
289 "APPLICATION_COMMAND_PERMISSIONS_UPDATE" => DispatchEvent::CommandPermissionsUpdate(
290 CommandPermissionsUpdate::deserialize(deserializer)?,
291 ),
292 "ENTITLEMENT_CREATE" => {
293 DispatchEvent::EntitlementCreate(EntitlementCreate::deserialize(deserializer)?)
294 }
295 "GUILD_AUDIT_LOG_ENTRY_CREATE" => DispatchEvent::GuildAuditLogEntryCreate(Box::new(
296 GuildAuditLogEntryCreate::deserialize(deserializer)?,
297 )),
298 "GUILD_BAN_ADD" => DispatchEvent::BanAdd(BanAdd::deserialize(deserializer)?),
299 "GUILD_BAN_REMOVE" => DispatchEvent::BanRemove(BanRemove::deserialize(deserializer)?),
300 "GUILD_CREATE" => {
301 DispatchEvent::GuildCreate(Box::new(GuildCreate::deserialize(deserializer)?))
302 }
303 "GUILD_DELETE" => DispatchEvent::GuildDelete(GuildDelete::deserialize(deserializer)?),
304 "GUILD_EMOJIS_UPDATE" => {
305 DispatchEvent::GuildEmojisUpdate(GuildEmojisUpdate::deserialize(deserializer)?)
306 }
307 "GUILD_INTEGRATIONS_UPDATE" => DispatchEvent::GuildIntegrationsUpdate(
308 GuildIntegrationsUpdate::deserialize(deserializer)?,
309 ),
310 "GUILD_SCHEDULED_EVENT_CREATE" => DispatchEvent::GuildScheduledEventCreate(Box::new(
311 GuildScheduledEventCreate::deserialize(deserializer)?,
312 )),
313 "GUILD_SCHEDULED_EVENT_DELETE" => DispatchEvent::GuildScheduledEventDelete(Box::new(
314 GuildScheduledEventDelete::deserialize(deserializer)?,
315 )),
316 "GUILD_SCHEDULED_EVENT_UPDATE" => DispatchEvent::GuildScheduledEventUpdate(Box::new(
317 GuildScheduledEventUpdate::deserialize(deserializer)?,
318 )),
319 "GUILD_SCHEDULED_EVENT_USER_ADD" => DispatchEvent::GuildScheduledEventUserAdd(
320 GuildScheduledEventUserAdd::deserialize(deserializer)?,
321 ),
322 "GUILD_SCHEDULED_EVENT_USER_REMOVE" => DispatchEvent::GuildScheduledEventUserRemove(
323 GuildScheduledEventUserRemove::deserialize(deserializer)?,
324 ),
325 "GUILD_MEMBERS_CHUNK" => {
326 DispatchEvent::MemberChunk(MemberChunk::deserialize(deserializer)?)
327 }
328 "GUILD_MEMBER_ADD" => {
329 DispatchEvent::MemberAdd(Box::new(MemberAdd::deserialize(deserializer)?))
330 }
331 "GUILD_MEMBER_REMOVE" => {
332 DispatchEvent::MemberRemove(MemberRemove::deserialize(deserializer)?)
333 }
334 "GUILD_MEMBER_UPDATE" => {
335 DispatchEvent::MemberUpdate(Box::new(MemberUpdate::deserialize(deserializer)?))
336 }
337 "GUILD_ROLE_CREATE" => {
338 DispatchEvent::RoleCreate(RoleCreate::deserialize(deserializer)?)
339 }
340 "GUILD_ROLE_DELETE" => {
341 DispatchEvent::RoleDelete(RoleDelete::deserialize(deserializer)?)
342 }
343 "GUILD_ROLE_UPDATE" => {
344 DispatchEvent::RoleUpdate(RoleUpdate::deserialize(deserializer)?)
345 }
346 "GUILD_STICKERS_UPDATE" => {
347 DispatchEvent::GuildStickersUpdate(GuildStickersUpdate::deserialize(deserializer)?)
348 }
349 "GUILD_UPDATE" => {
350 DispatchEvent::GuildUpdate(Box::new(GuildUpdate::deserialize(deserializer)?))
351 }
352 "INTEGRATION_CREATE" => DispatchEvent::IntegrationCreate(Box::new(
353 IntegrationCreate::deserialize(deserializer)?,
354 )),
355 "INTEGRATION_DELETE" => {
356 DispatchEvent::IntegrationDelete(IntegrationDelete::deserialize(deserializer)?)
357 }
358 "INTEGRATION_UPDATE" => DispatchEvent::IntegrationUpdate(Box::new(
359 IntegrationUpdate::deserialize(deserializer)?,
360 )),
361 "INTERACTION_CREATE" => DispatchEvent::InteractionCreate(Box::new(
362 InteractionCreate::deserialize(deserializer)?,
363 )),
364 "INVITE_CREATE" => {
365 DispatchEvent::InviteCreate(Box::new(InviteCreate::deserialize(deserializer)?))
366 }
367 "INVITE_DELETE" => {
368 DispatchEvent::InviteDelete(InviteDelete::deserialize(deserializer)?)
369 }
370 "MESSAGE_CREATE" => {
371 DispatchEvent::MessageCreate(Box::new(MessageCreate::deserialize(deserializer)?))
372 }
373 "MESSAGE_DELETE" => {
374 DispatchEvent::MessageDelete(MessageDelete::deserialize(deserializer)?)
375 }
376 "MESSAGE_DELETE_BULK" => {
377 DispatchEvent::MessageDeleteBulk(MessageDeleteBulk::deserialize(deserializer)?)
378 }
379 "MESSAGE_REACTION_ADD" => {
380 DispatchEvent::ReactionAdd(Box::new(ReactionAdd::deserialize(deserializer)?))
381 }
382 "MESSAGE_REACTION_REMOVE" => {
383 DispatchEvent::ReactionRemove(Box::new(ReactionRemove::deserialize(deserializer)?))
384 }
385 "MESSAGE_REACTION_REMOVE_EMOJI" => {
386 DispatchEvent::ReactionRemoveEmoji(ReactionRemoveEmoji::deserialize(deserializer)?)
387 }
388 "MESSAGE_REACTION_REMOVE_ALL" => {
389 DispatchEvent::ReactionRemoveAll(ReactionRemoveAll::deserialize(deserializer)?)
390 }
391 "MESSAGE_POLL_VOTE_ADD" => {
392 DispatchEvent::MessagePollVoteAdd(MessagePollVoteAdd::deserialize(deserializer)?)
393 }
394 "MESSAGE_POLL_VOTE_REMOVE" => DispatchEvent::MessagePollVoteRemove(
395 MessagePollVoteRemove::deserialize(deserializer)?,
396 ),
397 "MESSAGE_UPDATE" => {
398 DispatchEvent::MessageUpdate(Box::new(MessageUpdate::deserialize(deserializer)?))
399 }
400 "PRESENCE_UPDATE" => {
401 DispatchEvent::PresenceUpdate(Box::new(PresenceUpdate::deserialize(deserializer)?))
402 }
403 "RATE_LIMITED" => DispatchEvent::RateLimited(RateLimited::deserialize(deserializer)?),
404 "READY" => DispatchEvent::Ready(Ready::deserialize(deserializer)?),
405 "RESUMED" => {
406 deserializer.deserialize_ignored_any(IgnoredAny)?;
407
408 DispatchEvent::Resumed
409 }
410 "STAGE_INSTANCE_CREATE" => {
411 DispatchEvent::StageInstanceCreate(StageInstanceCreate::deserialize(deserializer)?)
412 }
413 "STAGE_INSTANCE_DELETE" => {
414 DispatchEvent::StageInstanceDelete(StageInstanceDelete::deserialize(deserializer)?)
415 }
416 "STAGE_INSTANCE_UPDATE" => {
417 DispatchEvent::StageInstanceUpdate(StageInstanceUpdate::deserialize(deserializer)?)
418 }
419 "SUBSCRIPTION_CREATE" => {
420 DispatchEvent::SubscriptionCreate(SubscriptionCreate::deserialize(deserializer)?)
421 }
422 "SUBSCRIPTION_DELETE" => {
423 DispatchEvent::SubscriptionDelete(SubscriptionDelete::deserialize(deserializer)?)
424 }
425 "SUBSCRIPTION_UPDATE" => {
426 DispatchEvent::SubscriptionUpdate(SubscriptionUpdate::deserialize(deserializer)?)
427 }
428 "THREAD_CREATE" => {
429 DispatchEvent::ThreadCreate(Box::new(ThreadCreate::deserialize(deserializer)?))
430 }
431 "THREAD_DELETE" => {
432 DispatchEvent::ThreadDelete(ThreadDelete::deserialize(deserializer)?)
433 }
434 "THREAD_LIST_SYNC" => {
435 DispatchEvent::ThreadListSync(ThreadListSync::deserialize(deserializer)?)
436 }
437 "THREAD_MEMBER_UPDATE" => DispatchEvent::ThreadMemberUpdate(Box::new(
438 ThreadMemberUpdate::deserialize(deserializer)?,
439 )),
440 "THREAD_MEMBERS_UPDATE" => {
441 DispatchEvent::ThreadMembersUpdate(ThreadMembersUpdate::deserialize(deserializer)?)
442 }
443 "THREAD_UPDATE" => {
444 DispatchEvent::ThreadUpdate(Box::new(ThreadUpdate::deserialize(deserializer)?))
445 }
446 "TYPING_START" => {
447 DispatchEvent::TypingStart(Box::new(TypingStart::deserialize(deserializer)?))
448 }
449 "USER_UPDATE" => DispatchEvent::UserUpdate(UserUpdate::deserialize(deserializer)?),
450 "VOICE_SERVER_UPDATE" => {
451 DispatchEvent::VoiceServerUpdate(VoiceServerUpdate::deserialize(deserializer)?)
452 }
453 "VOICE_STATE_UPDATE" => DispatchEvent::VoiceStateUpdate(Box::new(
454 VoiceStateUpdate::deserialize(deserializer)?,
455 )),
456 "WEBHOOKS_UPDATE" => {
457 DispatchEvent::WebhooksUpdate(WebhooksUpdate::deserialize(deserializer)?)
458 }
459 other => return Err(DeError::unknown_variant(other, &[])),
460 })
461 }
462}