1#![allow(clippy::wildcard_imports)]
2
3pub mod gateway;
4
5mod dispatch;
6mod kind;
7
8pub use self::{
9 dispatch::{DispatchEvent, DispatchEventWithTypeDeserializer},
10 gateway::{GatewayEvent, GatewayEventDeserializer},
11 kind::EventType,
12};
13
14use super::{payload::incoming::*, CloseFrame};
15use crate::id::{marker::GuildMarker, Id};
16use std::error::Error;
17use std::fmt::{Debug, Display, Formatter, Result as FmtResult};
18
19#[derive(Clone, Debug, PartialEq)]
26pub enum Event {
27 AutoModerationActionExecution(AutoModerationActionExecution),
29 AutoModerationRuleCreate(AutoModerationRuleCreate),
31 AutoModerationRuleDelete(AutoModerationRuleDelete),
33 AutoModerationRuleUpdate(AutoModerationRuleUpdate),
35 BanAdd(BanAdd),
37 BanRemove(BanRemove),
39 ChannelCreate(Box<ChannelCreate>),
41 ChannelDelete(Box<ChannelDelete>),
43 ChannelPinsUpdate(ChannelPinsUpdate),
45 ChannelUpdate(Box<ChannelUpdate>),
47 CommandPermissionsUpdate(CommandPermissionsUpdate),
49 EntitlementCreate(EntitlementCreate),
51 EntitlementDelete(EntitlementDelete),
53 EntitlementUpdate(EntitlementUpdate),
59 GatewayClose(Option<CloseFrame<'static>>),
62 GatewayHeartbeat,
64 GatewayHeartbeatAck,
66 GatewayHello(Hello),
68 GatewayInvalidateSession(bool),
72 GatewayReconnect,
74 GuildAuditLogEntryCreate(Box<GuildAuditLogEntryCreate>),
76 GuildCreate(Box<GuildCreate>),
78 GuildDelete(GuildDelete),
80 GuildEmojisUpdate(GuildEmojisUpdate),
82 GuildIntegrationsUpdate(GuildIntegrationsUpdate),
84 GuildScheduledEventCreate(Box<GuildScheduledEventCreate>),
86 GuildScheduledEventDelete(Box<GuildScheduledEventDelete>),
88 GuildScheduledEventUpdate(Box<GuildScheduledEventUpdate>),
90 GuildScheduledEventUserAdd(GuildScheduledEventUserAdd),
92 GuildScheduledEventUserRemove(GuildScheduledEventUserRemove),
94 GuildStickersUpdate(GuildStickersUpdate),
96 GuildUpdate(Box<GuildUpdate>),
98 IntegrationCreate(Box<IntegrationCreate>),
100 IntegrationDelete(IntegrationDelete),
102 IntegrationUpdate(Box<IntegrationUpdate>),
104 InteractionCreate(Box<InteractionCreate>),
106 InviteCreate(Box<InviteCreate>),
108 InviteDelete(InviteDelete),
110 MemberAdd(Box<MemberAdd>),
112 MemberRemove(MemberRemove),
114 MemberUpdate(Box<MemberUpdate>),
116 MemberChunk(MemberChunk),
118 MessageCreate(Box<MessageCreate>),
120 MessageDelete(MessageDelete),
122 MessageDeleteBulk(MessageDeleteBulk),
124 MessagePollVoteAdd(MessagePollVoteAdd),
126 MessagePollVoteRemove(MessagePollVoteRemove),
128 MessageUpdate(Box<MessageUpdate>),
130 PresenceUpdate(Box<PresenceUpdate>),
132 ReactionAdd(Box<ReactionAdd>),
134 ReactionRemove(Box<ReactionRemove>),
136 ReactionRemoveAll(ReactionRemoveAll),
138 ReactionRemoveEmoji(ReactionRemoveEmoji),
141 Ready(Box<Ready>),
143 Resumed,
145 RoleCreate(RoleCreate),
147 RoleDelete(RoleDelete),
149 RoleUpdate(RoleUpdate),
151 StageInstanceCreate(StageInstanceCreate),
153 StageInstanceDelete(StageInstanceDelete),
155 StageInstanceUpdate(StageInstanceUpdate),
157 ThreadCreate(Box<ThreadCreate>),
160 ThreadDelete(ThreadDelete),
162 ThreadListSync(ThreadListSync),
164 ThreadMemberUpdate(Box<ThreadMemberUpdate>),
166 ThreadMembersUpdate(ThreadMembersUpdate),
168 ThreadUpdate(Box<ThreadUpdate>),
170 TypingStart(Box<TypingStart>),
172 UnavailableGuild(UnavailableGuild),
174 UserUpdate(UserUpdate),
176 VoiceServerUpdate(VoiceServerUpdate),
178 VoiceStateUpdate(Box<VoiceStateUpdate>),
180 WebhooksUpdate(WebhooksUpdate),
182}
183
184impl Event {
185 pub const fn guild_id(&self) -> Option<Id<GuildMarker>> {
187 match self {
188 Event::AutoModerationActionExecution(e) => Some(e.guild_id),
189 Event::AutoModerationRuleCreate(e) => Some(e.0.guild_id),
190 Event::AutoModerationRuleDelete(e) => Some(e.0.guild_id),
191 Event::AutoModerationRuleUpdate(e) => Some(e.0.guild_id),
192 Event::BanAdd(e) => Some(e.guild_id),
193 Event::BanRemove(e) => Some(e.guild_id),
194 Event::ChannelCreate(e) => e.0.guild_id,
195 Event::ChannelDelete(e) => e.0.guild_id,
196 Event::ChannelPinsUpdate(e) => e.guild_id,
197 Event::ChannelUpdate(e) => e.0.guild_id,
198 Event::CommandPermissionsUpdate(e) => Some(e.0.guild_id),
199 Event::GuildAuditLogEntryCreate(e) => e.0.guild_id,
200 Event::GuildCreate(e) => Some(e.id()),
201 Event::GuildDelete(e) => Some(e.id),
202 Event::GuildEmojisUpdate(e) => Some(e.guild_id),
203 Event::GuildIntegrationsUpdate(e) => Some(e.guild_id),
204 Event::GuildScheduledEventCreate(e) => Some(e.0.guild_id),
205 Event::GuildScheduledEventDelete(e) => Some(e.0.guild_id),
206 Event::GuildScheduledEventUpdate(e) => Some(e.0.guild_id),
207 Event::GuildScheduledEventUserAdd(e) => Some(e.guild_id),
208 Event::GuildScheduledEventUserRemove(e) => Some(e.guild_id),
209 Event::GuildStickersUpdate(e) => Some(e.guild_id),
210 Event::GuildUpdate(e) => Some(e.0.id),
211 Event::IntegrationCreate(e) => e.0.guild_id,
212 Event::IntegrationDelete(e) => Some(e.guild_id),
213 Event::IntegrationUpdate(e) => e.0.guild_id,
214 Event::InteractionCreate(e) => e.0.guild_id,
215 Event::InviteCreate(e) => Some(e.guild_id),
216 Event::InviteDelete(e) => Some(e.guild_id),
217 Event::MemberAdd(e) => Some(e.guild_id),
218 Event::MemberChunk(e) => Some(e.guild_id),
219 Event::MemberRemove(e) => Some(e.guild_id),
220 Event::MemberUpdate(e) => Some(e.guild_id),
221 Event::MessageCreate(e) => e.0.guild_id,
222 Event::MessageDelete(e) => e.guild_id,
223 Event::MessageDeleteBulk(e) => e.guild_id,
224 Event::MessageUpdate(e) => e.0.guild_id,
225 Event::MessagePollVoteAdd(e) => e.guild_id,
226 Event::MessagePollVoteRemove(e) => e.guild_id,
227 Event::PresenceUpdate(e) => Some(e.0.guild_id),
228 Event::ReactionAdd(e) => e.0.guild_id,
229 Event::ReactionRemove(e) => e.0.guild_id,
230 Event::ReactionRemoveAll(e) => e.guild_id,
231 Event::ReactionRemoveEmoji(e) => Some(e.guild_id),
232 Event::RoleCreate(e) => Some(e.guild_id),
233 Event::RoleDelete(e) => Some(e.guild_id),
234 Event::RoleUpdate(e) => Some(e.guild_id),
235 Event::StageInstanceCreate(e) => Some(e.0.guild_id),
236 Event::StageInstanceDelete(e) => Some(e.0.guild_id),
237 Event::StageInstanceUpdate(e) => Some(e.0.guild_id),
238 Event::ThreadCreate(e) => e.0.guild_id,
239 Event::ThreadDelete(e) => Some(e.guild_id),
240 Event::ThreadListSync(e) => Some(e.guild_id),
241 Event::ThreadMemberUpdate(e) => Some(e.guild_id),
242 Event::ThreadMembersUpdate(e) => Some(e.guild_id),
243 Event::ThreadUpdate(e) => e.0.guild_id,
244 Event::TypingStart(e) => e.guild_id,
245 Event::UnavailableGuild(e) => Some(e.id),
246 Event::VoiceServerUpdate(e) => Some(e.guild_id),
247 Event::VoiceStateUpdate(e) => e.0.guild_id,
248 Event::WebhooksUpdate(e) => Some(e.guild_id),
249 Event::GatewayClose(_)
250 | Event::EntitlementCreate(_)
251 | Event::EntitlementDelete(_)
252 | Event::EntitlementUpdate(_)
253 | Event::GatewayHeartbeat
254 | Event::GatewayHeartbeatAck
255 | Event::GatewayHello(_)
256 | Event::GatewayInvalidateSession(_)
257 | Event::GatewayReconnect
258 | Event::Ready(_)
259 | Event::Resumed
260 | Event::UserUpdate(_) => None,
261 }
262 }
263
264 pub const fn kind(&self) -> EventType {
265 match self {
266 Self::AutoModerationActionExecution(_) => EventType::AutoModerationActionExecution,
267 Self::AutoModerationRuleCreate(_) => EventType::AutoModerationRuleCreate,
268 Self::AutoModerationRuleDelete(_) => EventType::AutoModerationRuleDelete,
269 Self::AutoModerationRuleUpdate(_) => EventType::AutoModerationRuleUpdate,
270 Self::BanAdd(_) => EventType::BanAdd,
271 Self::BanRemove(_) => EventType::BanRemove,
272 Self::ChannelCreate(_) => EventType::ChannelCreate,
273 Self::ChannelDelete(_) => EventType::ChannelDelete,
274 Self::ChannelPinsUpdate(_) => EventType::ChannelPinsUpdate,
275 Self::ChannelUpdate(_) => EventType::ChannelUpdate,
276 Self::CommandPermissionsUpdate(_) => EventType::CommandPermissionsUpdate,
277 Self::EntitlementCreate(_) => EventType::EntitlementCreate,
278 Self::EntitlementDelete(_) => EventType::EntitlementDelete,
279 Self::EntitlementUpdate(_) => EventType::EntitlementUpdate,
280 Self::GatewayClose(_) => EventType::GatewayClose,
281 Self::GatewayHeartbeat => EventType::GatewayHeartbeat,
282 Self::GatewayHeartbeatAck => EventType::GatewayHeartbeatAck,
283 Self::GatewayHello(_) => EventType::GatewayHello,
284 Self::GatewayInvalidateSession(_) => EventType::GatewayInvalidateSession,
285 Self::GatewayReconnect => EventType::GatewayReconnect,
286 Self::GuildAuditLogEntryCreate(_) => EventType::GuildAuditLogEntryCreate,
287 Self::GuildCreate(_) => EventType::GuildCreate,
288 Self::GuildDelete(_) => EventType::GuildDelete,
289 Self::GuildEmojisUpdate(_) => EventType::GuildEmojisUpdate,
290 Self::GuildIntegrationsUpdate(_) => EventType::GuildIntegrationsUpdate,
291 Self::GuildScheduledEventCreate(_) => EventType::GuildScheduledEventCreate,
292 Self::GuildScheduledEventDelete(_) => EventType::GuildScheduledEventDelete,
293 Self::GuildScheduledEventUpdate(_) => EventType::GuildScheduledEventUpdate,
294 Self::GuildScheduledEventUserAdd(_) => EventType::GuildScheduledEventUserAdd,
295 Self::GuildScheduledEventUserRemove(_) => EventType::GuildScheduledEventUserRemove,
296 Self::GuildStickersUpdate(_) => EventType::GuildStickersUpdate,
297 Self::GuildUpdate(_) => EventType::GuildUpdate,
298 Self::IntegrationCreate(_) => EventType::IntegrationCreate,
299 Self::IntegrationDelete(_) => EventType::IntegrationDelete,
300 Self::IntegrationUpdate(_) => EventType::IntegrationUpdate,
301 Self::InteractionCreate(_) => EventType::InteractionCreate,
302 Self::InviteCreate(_) => EventType::InviteCreate,
303 Self::InviteDelete(_) => EventType::InviteDelete,
304 Self::MemberAdd(_) => EventType::MemberAdd,
305 Self::MemberRemove(_) => EventType::MemberRemove,
306 Self::MemberUpdate(_) => EventType::MemberUpdate,
307 Self::MemberChunk(_) => EventType::MemberChunk,
308 Self::MessageCreate(_) => EventType::MessageCreate,
309 Self::MessageDelete(_) => EventType::MessageDelete,
310 Self::MessageDeleteBulk(_) => EventType::MessageDeleteBulk,
311 Self::MessagePollVoteAdd(_) => EventType::MessagePollVoteAdd,
312 Self::MessagePollVoteRemove(_) => EventType::MessagePollVoteRemove,
313 Self::MessageUpdate(_) => EventType::MessageUpdate,
314 Self::PresenceUpdate(_) => EventType::PresenceUpdate,
315 Self::ReactionAdd(_) => EventType::ReactionAdd,
316 Self::ReactionRemove(_) => EventType::ReactionRemove,
317 Self::ReactionRemoveAll(_) => EventType::ReactionRemoveAll,
318 Self::ReactionRemoveEmoji(_) => EventType::ReactionRemoveEmoji,
319 Self::Ready(_) => EventType::Ready,
320 Self::Resumed => EventType::Resumed,
321 Self::RoleCreate(_) => EventType::RoleCreate,
322 Self::RoleDelete(_) => EventType::RoleDelete,
323 Self::RoleUpdate(_) => EventType::RoleUpdate,
324 Self::StageInstanceCreate(_) => EventType::StageInstanceCreate,
325 Self::StageInstanceDelete(_) => EventType::StageInstanceDelete,
326 Self::StageInstanceUpdate(_) => EventType::StageInstanceUpdate,
327 Self::ThreadCreate(_) => EventType::ThreadCreate,
328 Self::ThreadDelete(_) => EventType::ThreadDelete,
329 Self::ThreadListSync(_) => EventType::ThreadListSync,
330 Self::ThreadMemberUpdate(_) => EventType::ThreadMemberUpdate,
331 Self::ThreadMembersUpdate(_) => EventType::ThreadMembersUpdate,
332 Self::ThreadUpdate(_) => EventType::ThreadUpdate,
333 Self::TypingStart(_) => EventType::TypingStart,
334 Self::UnavailableGuild(_) => EventType::UnavailableGuild,
335 Self::UserUpdate(_) => EventType::UserUpdate,
336 Self::VoiceServerUpdate(_) => EventType::VoiceServerUpdate,
337 Self::VoiceStateUpdate(_) => EventType::VoiceStateUpdate,
338 Self::WebhooksUpdate(_) => EventType::WebhooksUpdate,
339 }
340 }
341}
342
343impl From<DispatchEvent> for Event {
344 fn from(event: DispatchEvent) -> Self {
345 match event {
346 DispatchEvent::AutoModerationActionExecution(v) => {
347 Self::AutoModerationActionExecution(v)
348 }
349 DispatchEvent::AutoModerationRuleCreate(v) => Self::AutoModerationRuleCreate(v),
350 DispatchEvent::AutoModerationRuleDelete(v) => Self::AutoModerationRuleDelete(v),
351 DispatchEvent::AutoModerationRuleUpdate(v) => Self::AutoModerationRuleUpdate(v),
352 DispatchEvent::BanAdd(v) => Self::BanAdd(v),
353 DispatchEvent::BanRemove(v) => Self::BanRemove(v),
354 DispatchEvent::ChannelCreate(v) => Self::ChannelCreate(v),
355 DispatchEvent::ChannelDelete(v) => Self::ChannelDelete(v),
356 DispatchEvent::ChannelPinsUpdate(v) => Self::ChannelPinsUpdate(v),
357 DispatchEvent::ChannelUpdate(v) => Self::ChannelUpdate(v),
358 DispatchEvent::CommandPermissionsUpdate(v) => Self::CommandPermissionsUpdate(v),
359 DispatchEvent::EntitlementCreate(v) => Self::EntitlementCreate(v),
360 DispatchEvent::EntitlementDelete(v) => Self::EntitlementDelete(v),
361 DispatchEvent::EntitlementUpdate(v) => Self::EntitlementUpdate(v),
362 DispatchEvent::GuildAuditLogEntryCreate(v) => Self::GuildAuditLogEntryCreate(v),
363 DispatchEvent::GuildCreate(v) => Self::GuildCreate(v),
364 DispatchEvent::GuildDelete(v) => Self::GuildDelete(v),
365 DispatchEvent::GuildEmojisUpdate(v) => Self::GuildEmojisUpdate(v),
366 DispatchEvent::GuildIntegrationsUpdate(v) => Self::GuildIntegrationsUpdate(v),
367 DispatchEvent::GuildScheduledEventCreate(v) => Self::GuildScheduledEventCreate(v),
368 DispatchEvent::GuildScheduledEventDelete(v) => Self::GuildScheduledEventDelete(v),
369 DispatchEvent::GuildScheduledEventUpdate(v) => Self::GuildScheduledEventUpdate(v),
370 DispatchEvent::GuildScheduledEventUserAdd(v) => Self::GuildScheduledEventUserAdd(v),
371 DispatchEvent::GuildScheduledEventUserRemove(v) => {
372 Self::GuildScheduledEventUserRemove(v)
373 }
374 DispatchEvent::GuildStickersUpdate(v) => Self::GuildStickersUpdate(v),
375 DispatchEvent::GuildUpdate(v) => Self::GuildUpdate(v),
376 DispatchEvent::IntegrationCreate(v) => Self::IntegrationCreate(v),
377 DispatchEvent::IntegrationDelete(v) => Self::IntegrationDelete(v),
378 DispatchEvent::IntegrationUpdate(v) => Self::IntegrationUpdate(v),
379 DispatchEvent::InteractionCreate(v) => Self::InteractionCreate(v),
380 DispatchEvent::InviteCreate(v) => Self::InviteCreate(v),
381 DispatchEvent::InviteDelete(v) => Self::InviteDelete(v),
382 DispatchEvent::MemberAdd(v) => Self::MemberAdd(v),
383 DispatchEvent::MemberRemove(v) => Self::MemberRemove(v),
384 DispatchEvent::MemberUpdate(v) => Self::MemberUpdate(v),
385 DispatchEvent::MemberChunk(v) => Self::MemberChunk(v),
386 DispatchEvent::RoleCreate(v) => Self::RoleCreate(v),
387 DispatchEvent::RoleDelete(v) => Self::RoleDelete(v),
388 DispatchEvent::RoleUpdate(v) => Self::RoleUpdate(v),
389 DispatchEvent::MessageCreate(v) => Self::MessageCreate(v),
390 DispatchEvent::MessageDelete(v) => Self::MessageDelete(v),
391 DispatchEvent::MessageDeleteBulk(v) => Self::MessageDeleteBulk(v),
392 DispatchEvent::MessagePollVoteAdd(v) => Self::MessagePollVoteAdd(v),
393 DispatchEvent::MessagePollVoteRemove(v) => Self::MessagePollVoteRemove(v),
394 DispatchEvent::MessageUpdate(v) => Self::MessageUpdate(v),
395 DispatchEvent::PresenceUpdate(v) => Self::PresenceUpdate(v),
396 DispatchEvent::ReactionAdd(v) => Self::ReactionAdd(v),
397 DispatchEvent::ReactionRemove(v) => Self::ReactionRemove(v),
398 DispatchEvent::ReactionRemoveAll(v) => Self::ReactionRemoveAll(v),
399 DispatchEvent::ReactionRemoveEmoji(v) => Self::ReactionRemoveEmoji(v),
400 DispatchEvent::Ready(v) => Self::Ready(v),
401 DispatchEvent::Resumed => Self::Resumed,
402 DispatchEvent::StageInstanceCreate(v) => Self::StageInstanceCreate(v),
403 DispatchEvent::StageInstanceDelete(v) => Self::StageInstanceDelete(v),
404 DispatchEvent::StageInstanceUpdate(v) => Self::StageInstanceUpdate(v),
405 DispatchEvent::ThreadCreate(v) => Self::ThreadCreate(v),
406 DispatchEvent::ThreadDelete(v) => Self::ThreadDelete(v),
407 DispatchEvent::ThreadListSync(v) => Self::ThreadListSync(v),
408 DispatchEvent::ThreadMemberUpdate(v) => Self::ThreadMemberUpdate(v),
409 DispatchEvent::ThreadMembersUpdate(v) => Self::ThreadMembersUpdate(v),
410 DispatchEvent::ThreadUpdate(v) => Self::ThreadUpdate(v),
411 DispatchEvent::TypingStart(v) => Self::TypingStart(v),
412 DispatchEvent::UnavailableGuild(v) => Self::UnavailableGuild(v),
413 DispatchEvent::UserUpdate(v) => Self::UserUpdate(v),
414 DispatchEvent::VoiceServerUpdate(v) => Self::VoiceServerUpdate(v),
415 DispatchEvent::VoiceStateUpdate(v) => Self::VoiceStateUpdate(v),
416 DispatchEvent::WebhooksUpdate(v) => Self::WebhooksUpdate(v),
417 }
418 }
419}
420
421impl From<GatewayEvent> for Event {
422 fn from(event: GatewayEvent) -> Self {
423 match event {
424 GatewayEvent::Dispatch(_, e) => Self::from(e),
425 GatewayEvent::Heartbeat => Self::GatewayHeartbeat,
426 GatewayEvent::HeartbeatAck => Self::GatewayHeartbeatAck,
427 GatewayEvent::Hello(interval) => Self::GatewayHello(interval),
428 GatewayEvent::InvalidateSession(r) => Self::GatewayInvalidateSession(r),
429 GatewayEvent::Reconnect => Self::GatewayReconnect,
430 }
431 }
432}
433
434#[derive(Debug)]
436pub struct EventConversionError {
437 event: Event,
438}
439
440impl EventConversionError {
441 pub const fn new(event: Event) -> EventConversionError {
442 Self { event }
443 }
444
445 pub const fn event_ref(&self) -> &Event {
447 &self.event
448 }
449
450 #[allow(clippy::missing_const_for_fn)]
452 pub fn into_event(self) -> Event {
453 self.event
454 }
455}
456
457impl Display for EventConversionError {
458 fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
459 f.write_str("event variant failed to convert")
460 }
461}
462
463impl Error for EventConversionError {}
464
465#[cfg(test)]
466mod tests {
467 use super::{super::payload::incoming::*, Event};
482 use static_assertions::const_assert;
483 use std::mem;
484
485 #[allow(dead_code)]
489 const EVENT_THRESHOLD: usize = 256;
490
491 const_assert!(mem::size_of::<Event>() == EVENT_THRESHOLD);
492
493 const_assert!(mem::size_of::<ChannelCreate>() > EVENT_THRESHOLD);
495 const_assert!(mem::size_of::<ChannelDelete>() > EVENT_THRESHOLD);
496 const_assert!(mem::size_of::<ChannelUpdate>() > EVENT_THRESHOLD);
497 const_assert!(mem::size_of::<GuildScheduledEventCreate>() > EVENT_THRESHOLD);
498 const_assert!(mem::size_of::<GuildScheduledEventDelete>() > EVENT_THRESHOLD);
499 const_assert!(mem::size_of::<GuildScheduledEventUpdate>() > EVENT_THRESHOLD);
500 const_assert!(mem::size_of::<GuildUpdate>() > EVENT_THRESHOLD);
501 const_assert!(mem::size_of::<IntegrationCreate>() > EVENT_THRESHOLD);
502 const_assert!(mem::size_of::<IntegrationUpdate>() > EVENT_THRESHOLD);
503 const_assert!(mem::size_of::<InviteCreate>() > EVENT_THRESHOLD);
504 const_assert!(mem::size_of::<InteractionCreate>() > EVENT_THRESHOLD);
505 const_assert!(mem::size_of::<MemberAdd>() > EVENT_THRESHOLD);
506 const_assert!(mem::size_of::<MemberUpdate>() > EVENT_THRESHOLD);
507 const_assert!(mem::size_of::<MessageCreate>() > EVENT_THRESHOLD);
508 const_assert!(mem::size_of::<MessageUpdate>() > EVENT_THRESHOLD);
509 const_assert!(mem::size_of::<PresenceUpdate>() > EVENT_THRESHOLD);
510 const_assert!(mem::size_of::<ReactionAdd>() > EVENT_THRESHOLD);
511 const_assert!(mem::size_of::<ReactionRemove>() > EVENT_THRESHOLD);
512 const_assert!(mem::size_of::<Ready>() > EVENT_THRESHOLD);
513 const_assert!(mem::size_of::<ThreadCreate>() > EVENT_THRESHOLD);
514 const_assert!(mem::size_of::<ThreadMemberUpdate>() > EVENT_THRESHOLD);
515 const_assert!(mem::size_of::<ThreadUpdate>() > EVENT_THRESHOLD);
516 const_assert!(mem::size_of::<TypingStart>() > EVENT_THRESHOLD);
517 const_assert!(mem::size_of::<VoiceStateUpdate>() > EVENT_THRESHOLD);
518
519 const_assert!(mem::size_of::<AutoModerationRuleCreate>() <= EVENT_THRESHOLD);
521 const_assert!(mem::size_of::<AutoModerationRuleDelete>() <= EVENT_THRESHOLD);
522 const_assert!(mem::size_of::<AutoModerationRuleUpdate>() <= EVENT_THRESHOLD);
523 const_assert!(mem::size_of::<AutoModerationActionExecution>() <= EVENT_THRESHOLD);
524 const_assert!(mem::size_of::<BanAdd>() <= EVENT_THRESHOLD);
525 const_assert!(mem::size_of::<BanRemove>() <= EVENT_THRESHOLD);
526 const_assert!(mem::size_of::<ChannelPinsUpdate>() <= EVENT_THRESHOLD);
527 const_assert!(mem::size_of::<CommandPermissionsUpdate>() <= EVENT_THRESHOLD);
528 const_assert!(mem::size_of::<GuildDelete>() <= EVENT_THRESHOLD);
529 const_assert!(mem::size_of::<GuildEmojisUpdate>() <= EVENT_THRESHOLD);
530 const_assert!(mem::size_of::<GuildIntegrationsUpdate>() <= EVENT_THRESHOLD);
531 const_assert!(mem::size_of::<GuildScheduledEventUserAdd>() <= EVENT_THRESHOLD);
532 const_assert!(mem::size_of::<GuildScheduledEventUserRemove>() <= EVENT_THRESHOLD);
533 const_assert!(mem::size_of::<IntegrationDelete>() <= EVENT_THRESHOLD);
534 const_assert!(mem::size_of::<InviteDelete>() <= EVENT_THRESHOLD);
535 const_assert!(mem::size_of::<MemberChunk>() <= EVENT_THRESHOLD);
536 const_assert!(mem::size_of::<MemberRemove>() <= EVENT_THRESHOLD);
537 const_assert!(mem::size_of::<MessageDelete>() <= EVENT_THRESHOLD);
538 const_assert!(mem::size_of::<MessageDeleteBulk>() <= EVENT_THRESHOLD);
539 const_assert!(mem::size_of::<ReactionRemoveAll>() <= EVENT_THRESHOLD);
540 const_assert!(mem::size_of::<RoleCreate>() <= EVENT_THRESHOLD);
541 const_assert!(mem::size_of::<RoleDelete>() <= EVENT_THRESHOLD);
542 const_assert!(mem::size_of::<RoleUpdate>() <= EVENT_THRESHOLD);
543 const_assert!(mem::size_of::<StageInstanceCreate>() <= EVENT_THRESHOLD);
544 const_assert!(mem::size_of::<StageInstanceDelete>() <= EVENT_THRESHOLD);
545 const_assert!(mem::size_of::<StageInstanceUpdate>() <= EVENT_THRESHOLD);
546 const_assert!(mem::size_of::<ThreadDelete>() <= EVENT_THRESHOLD);
547 const_assert!(mem::size_of::<ThreadListSync>() <= EVENT_THRESHOLD);
548 const_assert!(mem::size_of::<ThreadMembersUpdate>() <= EVENT_THRESHOLD);
549 const_assert!(mem::size_of::<UnavailableGuild>() <= EVENT_THRESHOLD);
550 const_assert!(mem::size_of::<UserUpdate>() <= EVENT_THRESHOLD);
551 const_assert!(mem::size_of::<VoiceServerUpdate>() <= EVENT_THRESHOLD);
552 const_assert!(mem::size_of::<WebhooksUpdate>() <= EVENT_THRESHOLD);
553 const_assert!(mem::size_of::<MessagePollVoteAdd>() <= EVENT_THRESHOLD);
554 const_assert!(mem::size_of::<MessagePollVoteRemove>() <= EVENT_THRESHOLD);
555}