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::{CloseFrame, payload::incoming::*};
15use crate::gateway::payload::incoming::rate_limited::RateLimitMetadata;
16use crate::id::{Id, marker::GuildMarker};
17use std::error::Error;
18use std::fmt::{Debug, Display, Formatter, Result as FmtResult};
19
20#[derive(Clone, Debug, PartialEq)]
27pub enum Event {
28 AutoModerationActionExecution(AutoModerationActionExecution),
30 AutoModerationRuleCreate(AutoModerationRuleCreate),
32 AutoModerationRuleDelete(AutoModerationRuleDelete),
34 AutoModerationRuleUpdate(AutoModerationRuleUpdate),
36 BanAdd(BanAdd),
38 BanRemove(BanRemove),
40 ChannelCreate(Box<ChannelCreate>),
42 ChannelDelete(Box<ChannelDelete>),
44 ChannelPinsUpdate(ChannelPinsUpdate),
46 ChannelUpdate(Box<ChannelUpdate>),
48 CommandPermissionsUpdate(CommandPermissionsUpdate),
50 EntitlementCreate(EntitlementCreate),
52 EntitlementDelete(EntitlementDelete),
54 EntitlementUpdate(EntitlementUpdate),
60 GatewayClose(Option<CloseFrame<'static>>),
63 GatewayHeartbeat,
65 GatewayHeartbeatAck,
67 GatewayHello(Hello),
69 GatewayInvalidateSession(bool),
73 GatewayReconnect,
75 GuildAuditLogEntryCreate(Box<GuildAuditLogEntryCreate>),
77 GuildCreate(Box<GuildCreate>),
79 GuildDelete(GuildDelete),
81 GuildEmojisUpdate(GuildEmojisUpdate),
83 GuildIntegrationsUpdate(GuildIntegrationsUpdate),
85 GuildScheduledEventCreate(Box<GuildScheduledEventCreate>),
87 GuildScheduledEventDelete(Box<GuildScheduledEventDelete>),
89 GuildScheduledEventUpdate(Box<GuildScheduledEventUpdate>),
91 GuildScheduledEventUserAdd(GuildScheduledEventUserAdd),
93 GuildScheduledEventUserRemove(GuildScheduledEventUserRemove),
95 GuildStickersUpdate(GuildStickersUpdate),
97 GuildUpdate(Box<GuildUpdate>),
99 IntegrationCreate(Box<IntegrationCreate>),
101 IntegrationDelete(IntegrationDelete),
103 IntegrationUpdate(Box<IntegrationUpdate>),
105 InteractionCreate(Box<InteractionCreate>),
107 InviteCreate(Box<InviteCreate>),
109 InviteDelete(InviteDelete),
111 MemberAdd(Box<MemberAdd>),
113 MemberRemove(MemberRemove),
115 MemberUpdate(Box<MemberUpdate>),
117 MemberChunk(MemberChunk),
119 MessageCreate(Box<MessageCreate>),
121 MessageDelete(MessageDelete),
123 MessageDeleteBulk(MessageDeleteBulk),
125 MessagePollVoteAdd(MessagePollVoteAdd),
127 MessagePollVoteRemove(MessagePollVoteRemove),
129 MessageUpdate(Box<MessageUpdate>),
131 PresenceUpdate(Box<PresenceUpdate>),
133 RateLimited(RateLimited),
135 ReactionAdd(Box<ReactionAdd>),
137 ReactionRemove(Box<ReactionRemove>),
139 ReactionRemoveAll(ReactionRemoveAll),
141 ReactionRemoveEmoji(ReactionRemoveEmoji),
144 Ready(Ready),
146 Resumed,
148 RoleCreate(RoleCreate),
150 RoleDelete(RoleDelete),
152 RoleUpdate(RoleUpdate),
154 StageInstanceCreate(StageInstanceCreate),
156 StageInstanceDelete(StageInstanceDelete),
158 StageInstanceUpdate(StageInstanceUpdate),
160 ThreadCreate(Box<ThreadCreate>),
163 ThreadDelete(ThreadDelete),
165 ThreadListSync(ThreadListSync),
167 ThreadMemberUpdate(Box<ThreadMemberUpdate>),
169 ThreadMembersUpdate(ThreadMembersUpdate),
171 ThreadUpdate(Box<ThreadUpdate>),
173 TypingStart(Box<TypingStart>),
175 UnavailableGuild(UnavailableGuild),
177 UserUpdate(UserUpdate),
179 VoiceServerUpdate(VoiceServerUpdate),
181 VoiceStateUpdate(Box<VoiceStateUpdate>),
183 WebhooksUpdate(WebhooksUpdate),
185}
186
187impl Event {
188 pub const fn guild_id(&self) -> Option<Id<GuildMarker>> {
190 match self {
191 Event::AutoModerationActionExecution(e) => Some(e.guild_id),
192 Event::AutoModerationRuleCreate(e) => Some(e.0.guild_id),
193 Event::AutoModerationRuleDelete(e) => Some(e.0.guild_id),
194 Event::AutoModerationRuleUpdate(e) => Some(e.0.guild_id),
195 Event::BanAdd(e) => Some(e.guild_id),
196 Event::BanRemove(e) => Some(e.guild_id),
197 Event::ChannelCreate(e) => e.0.guild_id,
198 Event::ChannelDelete(e) => e.0.guild_id,
199 Event::ChannelPinsUpdate(e) => e.guild_id,
200 Event::ChannelUpdate(e) => e.0.guild_id,
201 Event::CommandPermissionsUpdate(e) => Some(e.0.guild_id),
202 Event::GuildAuditLogEntryCreate(e) => e.0.guild_id,
203 Event::GuildCreate(e) => Some(e.id()),
204 Event::GuildDelete(e) => Some(e.id),
205 Event::GuildEmojisUpdate(e) => Some(e.guild_id),
206 Event::GuildIntegrationsUpdate(e) => Some(e.guild_id),
207 Event::GuildScheduledEventCreate(e) => Some(e.0.guild_id),
208 Event::GuildScheduledEventDelete(e) => Some(e.0.guild_id),
209 Event::GuildScheduledEventUpdate(e) => Some(e.0.guild_id),
210 Event::GuildScheduledEventUserAdd(e) => Some(e.guild_id),
211 Event::GuildScheduledEventUserRemove(e) => Some(e.guild_id),
212 Event::GuildStickersUpdate(e) => Some(e.guild_id),
213 Event::GuildUpdate(e) => Some(e.0.id),
214 Event::IntegrationCreate(e) => e.0.guild_id,
215 Event::IntegrationDelete(e) => Some(e.guild_id),
216 Event::IntegrationUpdate(e) => e.0.guild_id,
217 Event::InteractionCreate(e) => e.0.guild_id,
218 Event::InviteCreate(e) => Some(e.guild_id),
219 Event::InviteDelete(e) => Some(e.guild_id),
220 Event::MemberAdd(e) => Some(e.guild_id),
221 Event::MemberChunk(e) => Some(e.guild_id),
222 Event::MemberRemove(e) => Some(e.guild_id),
223 Event::MemberUpdate(e) => Some(e.guild_id),
224 Event::MessageCreate(e) => e.0.guild_id,
225 Event::MessageDelete(e) => e.guild_id,
226 Event::MessageDeleteBulk(e) => e.guild_id,
227 Event::MessageUpdate(e) => e.0.guild_id,
228 Event::MessagePollVoteAdd(e) => e.guild_id,
229 Event::MessagePollVoteRemove(e) => e.guild_id,
230 Event::PresenceUpdate(e) => Some(e.0.guild_id),
231 Event::RateLimited(RateLimited {
232 meta: RateLimitMetadata::RequestGuildMembers { guild_id, .. },
233 ..
234 }) => Some(*guild_id),
235 Event::ReactionAdd(e) => e.0.guild_id,
236 Event::ReactionRemove(e) => e.0.guild_id,
237 Event::ReactionRemoveAll(e) => e.guild_id,
238 Event::ReactionRemoveEmoji(e) => Some(e.guild_id),
239 Event::RoleCreate(e) => Some(e.guild_id),
240 Event::RoleDelete(e) => Some(e.guild_id),
241 Event::RoleUpdate(e) => Some(e.guild_id),
242 Event::StageInstanceCreate(e) => Some(e.0.guild_id),
243 Event::StageInstanceDelete(e) => Some(e.0.guild_id),
244 Event::StageInstanceUpdate(e) => Some(e.0.guild_id),
245 Event::ThreadCreate(e) => e.0.guild_id,
246 Event::ThreadDelete(e) => Some(e.guild_id),
247 Event::ThreadListSync(e) => Some(e.guild_id),
248 Event::ThreadMemberUpdate(e) => Some(e.guild_id),
249 Event::ThreadMembersUpdate(e) => Some(e.guild_id),
250 Event::ThreadUpdate(e) => e.0.guild_id,
251 Event::TypingStart(e) => e.guild_id,
252 Event::UnavailableGuild(e) => Some(e.id),
253 Event::VoiceServerUpdate(e) => Some(e.guild_id),
254 Event::VoiceStateUpdate(e) => e.0.guild_id,
255 Event::WebhooksUpdate(e) => Some(e.guild_id),
256 Event::GatewayClose(_)
257 | Event::EntitlementCreate(_)
258 | Event::EntitlementDelete(_)
259 | Event::EntitlementUpdate(_)
260 | Event::GatewayHeartbeat
261 | Event::GatewayHeartbeatAck
262 | Event::GatewayHello(_)
263 | Event::GatewayInvalidateSession(_)
264 | Event::GatewayReconnect
265 | Event::Ready(_)
266 | Event::Resumed
267 | Event::UserUpdate(_) => None,
268 }
269 }
270
271 pub const fn kind(&self) -> EventType {
272 match self {
273 Self::AutoModerationActionExecution(_) => EventType::AutoModerationActionExecution,
274 Self::AutoModerationRuleCreate(_) => EventType::AutoModerationRuleCreate,
275 Self::AutoModerationRuleDelete(_) => EventType::AutoModerationRuleDelete,
276 Self::AutoModerationRuleUpdate(_) => EventType::AutoModerationRuleUpdate,
277 Self::BanAdd(_) => EventType::BanAdd,
278 Self::BanRemove(_) => EventType::BanRemove,
279 Self::ChannelCreate(_) => EventType::ChannelCreate,
280 Self::ChannelDelete(_) => EventType::ChannelDelete,
281 Self::ChannelPinsUpdate(_) => EventType::ChannelPinsUpdate,
282 Self::ChannelUpdate(_) => EventType::ChannelUpdate,
283 Self::CommandPermissionsUpdate(_) => EventType::CommandPermissionsUpdate,
284 Self::EntitlementCreate(_) => EventType::EntitlementCreate,
285 Self::EntitlementDelete(_) => EventType::EntitlementDelete,
286 Self::EntitlementUpdate(_) => EventType::EntitlementUpdate,
287 Self::GatewayClose(_) => EventType::GatewayClose,
288 Self::GatewayHeartbeat => EventType::GatewayHeartbeat,
289 Self::GatewayHeartbeatAck => EventType::GatewayHeartbeatAck,
290 Self::GatewayHello(_) => EventType::GatewayHello,
291 Self::GatewayInvalidateSession(_) => EventType::GatewayInvalidateSession,
292 Self::GatewayReconnect => EventType::GatewayReconnect,
293 Self::GuildAuditLogEntryCreate(_) => EventType::GuildAuditLogEntryCreate,
294 Self::GuildCreate(_) => EventType::GuildCreate,
295 Self::GuildDelete(_) => EventType::GuildDelete,
296 Self::GuildEmojisUpdate(_) => EventType::GuildEmojisUpdate,
297 Self::GuildIntegrationsUpdate(_) => EventType::GuildIntegrationsUpdate,
298 Self::GuildScheduledEventCreate(_) => EventType::GuildScheduledEventCreate,
299 Self::GuildScheduledEventDelete(_) => EventType::GuildScheduledEventDelete,
300 Self::GuildScheduledEventUpdate(_) => EventType::GuildScheduledEventUpdate,
301 Self::GuildScheduledEventUserAdd(_) => EventType::GuildScheduledEventUserAdd,
302 Self::GuildScheduledEventUserRemove(_) => EventType::GuildScheduledEventUserRemove,
303 Self::GuildStickersUpdate(_) => EventType::GuildStickersUpdate,
304 Self::GuildUpdate(_) => EventType::GuildUpdate,
305 Self::IntegrationCreate(_) => EventType::IntegrationCreate,
306 Self::IntegrationDelete(_) => EventType::IntegrationDelete,
307 Self::IntegrationUpdate(_) => EventType::IntegrationUpdate,
308 Self::InteractionCreate(_) => EventType::InteractionCreate,
309 Self::InviteCreate(_) => EventType::InviteCreate,
310 Self::InviteDelete(_) => EventType::InviteDelete,
311 Self::MemberAdd(_) => EventType::MemberAdd,
312 Self::MemberRemove(_) => EventType::MemberRemove,
313 Self::MemberUpdate(_) => EventType::MemberUpdate,
314 Self::MemberChunk(_) => EventType::MemberChunk,
315 Self::MessageCreate(_) => EventType::MessageCreate,
316 Self::MessageDelete(_) => EventType::MessageDelete,
317 Self::MessageDeleteBulk(_) => EventType::MessageDeleteBulk,
318 Self::MessagePollVoteAdd(_) => EventType::MessagePollVoteAdd,
319 Self::MessagePollVoteRemove(_) => EventType::MessagePollVoteRemove,
320 Self::MessageUpdate(_) => EventType::MessageUpdate,
321 Self::PresenceUpdate(_) => EventType::PresenceUpdate,
322 Self::RateLimited(_) => EventType::RateLimited,
323 Self::ReactionAdd(_) => EventType::ReactionAdd,
324 Self::ReactionRemove(_) => EventType::ReactionRemove,
325 Self::ReactionRemoveAll(_) => EventType::ReactionRemoveAll,
326 Self::ReactionRemoveEmoji(_) => EventType::ReactionRemoveEmoji,
327 Self::Ready(_) => EventType::Ready,
328 Self::Resumed => EventType::Resumed,
329 Self::RoleCreate(_) => EventType::RoleCreate,
330 Self::RoleDelete(_) => EventType::RoleDelete,
331 Self::RoleUpdate(_) => EventType::RoleUpdate,
332 Self::StageInstanceCreate(_) => EventType::StageInstanceCreate,
333 Self::StageInstanceDelete(_) => EventType::StageInstanceDelete,
334 Self::StageInstanceUpdate(_) => EventType::StageInstanceUpdate,
335 Self::ThreadCreate(_) => EventType::ThreadCreate,
336 Self::ThreadDelete(_) => EventType::ThreadDelete,
337 Self::ThreadListSync(_) => EventType::ThreadListSync,
338 Self::ThreadMemberUpdate(_) => EventType::ThreadMemberUpdate,
339 Self::ThreadMembersUpdate(_) => EventType::ThreadMembersUpdate,
340 Self::ThreadUpdate(_) => EventType::ThreadUpdate,
341 Self::TypingStart(_) => EventType::TypingStart,
342 Self::UnavailableGuild(_) => EventType::UnavailableGuild,
343 Self::UserUpdate(_) => EventType::UserUpdate,
344 Self::VoiceServerUpdate(_) => EventType::VoiceServerUpdate,
345 Self::VoiceStateUpdate(_) => EventType::VoiceStateUpdate,
346 Self::WebhooksUpdate(_) => EventType::WebhooksUpdate,
347 }
348 }
349}
350
351impl From<DispatchEvent> for Event {
352 fn from(event: DispatchEvent) -> Self {
353 match event {
354 DispatchEvent::AutoModerationActionExecution(v) => {
355 Self::AutoModerationActionExecution(v)
356 }
357 DispatchEvent::AutoModerationRuleCreate(v) => Self::AutoModerationRuleCreate(v),
358 DispatchEvent::AutoModerationRuleDelete(v) => Self::AutoModerationRuleDelete(v),
359 DispatchEvent::AutoModerationRuleUpdate(v) => Self::AutoModerationRuleUpdate(v),
360 DispatchEvent::BanAdd(v) => Self::BanAdd(v),
361 DispatchEvent::BanRemove(v) => Self::BanRemove(v),
362 DispatchEvent::ChannelCreate(v) => Self::ChannelCreate(v),
363 DispatchEvent::ChannelDelete(v) => Self::ChannelDelete(v),
364 DispatchEvent::ChannelPinsUpdate(v) => Self::ChannelPinsUpdate(v),
365 DispatchEvent::ChannelUpdate(v) => Self::ChannelUpdate(v),
366 DispatchEvent::CommandPermissionsUpdate(v) => Self::CommandPermissionsUpdate(v),
367 DispatchEvent::EntitlementCreate(v) => Self::EntitlementCreate(v),
368 DispatchEvent::EntitlementDelete(v) => Self::EntitlementDelete(v),
369 DispatchEvent::EntitlementUpdate(v) => Self::EntitlementUpdate(v),
370 DispatchEvent::GuildAuditLogEntryCreate(v) => Self::GuildAuditLogEntryCreate(v),
371 DispatchEvent::GuildCreate(v) => Self::GuildCreate(v),
372 DispatchEvent::GuildDelete(v) => Self::GuildDelete(v),
373 DispatchEvent::GuildEmojisUpdate(v) => Self::GuildEmojisUpdate(v),
374 DispatchEvent::GuildIntegrationsUpdate(v) => Self::GuildIntegrationsUpdate(v),
375 DispatchEvent::GuildScheduledEventCreate(v) => Self::GuildScheduledEventCreate(v),
376 DispatchEvent::GuildScheduledEventDelete(v) => Self::GuildScheduledEventDelete(v),
377 DispatchEvent::GuildScheduledEventUpdate(v) => Self::GuildScheduledEventUpdate(v),
378 DispatchEvent::GuildScheduledEventUserAdd(v) => Self::GuildScheduledEventUserAdd(v),
379 DispatchEvent::GuildScheduledEventUserRemove(v) => {
380 Self::GuildScheduledEventUserRemove(v)
381 }
382 DispatchEvent::GuildStickersUpdate(v) => Self::GuildStickersUpdate(v),
383 DispatchEvent::GuildUpdate(v) => Self::GuildUpdate(v),
384 DispatchEvent::IntegrationCreate(v) => Self::IntegrationCreate(v),
385 DispatchEvent::IntegrationDelete(v) => Self::IntegrationDelete(v),
386 DispatchEvent::IntegrationUpdate(v) => Self::IntegrationUpdate(v),
387 DispatchEvent::InteractionCreate(v) => Self::InteractionCreate(v),
388 DispatchEvent::InviteCreate(v) => Self::InviteCreate(v),
389 DispatchEvent::InviteDelete(v) => Self::InviteDelete(v),
390 DispatchEvent::MemberAdd(v) => Self::MemberAdd(v),
391 DispatchEvent::MemberRemove(v) => Self::MemberRemove(v),
392 DispatchEvent::MemberUpdate(v) => Self::MemberUpdate(v),
393 DispatchEvent::MemberChunk(v) => Self::MemberChunk(v),
394 DispatchEvent::RoleCreate(v) => Self::RoleCreate(v),
395 DispatchEvent::RoleDelete(v) => Self::RoleDelete(v),
396 DispatchEvent::RoleUpdate(v) => Self::RoleUpdate(v),
397 DispatchEvent::MessageCreate(v) => Self::MessageCreate(v),
398 DispatchEvent::MessageDelete(v) => Self::MessageDelete(v),
399 DispatchEvent::MessageDeleteBulk(v) => Self::MessageDeleteBulk(v),
400 DispatchEvent::MessagePollVoteAdd(v) => Self::MessagePollVoteAdd(v),
401 DispatchEvent::MessagePollVoteRemove(v) => Self::MessagePollVoteRemove(v),
402 DispatchEvent::MessageUpdate(v) => Self::MessageUpdate(v),
403 DispatchEvent::PresenceUpdate(v) => Self::PresenceUpdate(v),
404 DispatchEvent::RateLimited(v) => Self::RateLimited(v),
405 DispatchEvent::ReactionAdd(v) => Self::ReactionAdd(v),
406 DispatchEvent::ReactionRemove(v) => Self::ReactionRemove(v),
407 DispatchEvent::ReactionRemoveAll(v) => Self::ReactionRemoveAll(v),
408 DispatchEvent::ReactionRemoveEmoji(v) => Self::ReactionRemoveEmoji(v),
409 DispatchEvent::Ready(v) => Self::Ready(v),
410 DispatchEvent::Resumed => Self::Resumed,
411 DispatchEvent::StageInstanceCreate(v) => Self::StageInstanceCreate(v),
412 DispatchEvent::StageInstanceDelete(v) => Self::StageInstanceDelete(v),
413 DispatchEvent::StageInstanceUpdate(v) => Self::StageInstanceUpdate(v),
414 DispatchEvent::ThreadCreate(v) => Self::ThreadCreate(v),
415 DispatchEvent::ThreadDelete(v) => Self::ThreadDelete(v),
416 DispatchEvent::ThreadListSync(v) => Self::ThreadListSync(v),
417 DispatchEvent::ThreadMemberUpdate(v) => Self::ThreadMemberUpdate(v),
418 DispatchEvent::ThreadMembersUpdate(v) => Self::ThreadMembersUpdate(v),
419 DispatchEvent::ThreadUpdate(v) => Self::ThreadUpdate(v),
420 DispatchEvent::TypingStart(v) => Self::TypingStart(v),
421 DispatchEvent::UnavailableGuild(v) => Self::UnavailableGuild(v),
422 DispatchEvent::UserUpdate(v) => Self::UserUpdate(v),
423 DispatchEvent::VoiceServerUpdate(v) => Self::VoiceServerUpdate(v),
424 DispatchEvent::VoiceStateUpdate(v) => Self::VoiceStateUpdate(v),
425 DispatchEvent::WebhooksUpdate(v) => Self::WebhooksUpdate(v),
426 }
427 }
428}
429
430impl From<GatewayEvent> for Event {
431 fn from(event: GatewayEvent) -> Self {
432 match event {
433 GatewayEvent::Dispatch(_, e) => Self::from(e),
434 GatewayEvent::Heartbeat => Self::GatewayHeartbeat,
435 GatewayEvent::HeartbeatAck => Self::GatewayHeartbeatAck,
436 GatewayEvent::Hello(interval) => Self::GatewayHello(interval),
437 GatewayEvent::InvalidateSession(r) => Self::GatewayInvalidateSession(r),
438 GatewayEvent::Reconnect => Self::GatewayReconnect,
439 }
440 }
441}
442
443#[derive(Debug)]
445pub struct EventConversionError {
446 event: Event,
447}
448
449impl EventConversionError {
450 pub const fn new(event: Event) -> EventConversionError {
451 Self { event }
452 }
453
454 pub const fn event_ref(&self) -> &Event {
456 &self.event
457 }
458
459 #[allow(clippy::missing_const_for_fn)]
461 pub fn into_event(self) -> Event {
462 self.event
463 }
464}
465
466impl Display for EventConversionError {
467 fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
468 f.write_str("event variant failed to convert")
469 }
470}
471
472impl Error for EventConversionError {}
473
474#[cfg(test)]
475mod tests {
476 use super::{super::payload::incoming::*, Event};
491 use static_assertions::const_assert;
492 use std::mem;
493
494 #[allow(dead_code)]
498 const EVENT_THRESHOLD: usize = 312;
499
500 const_assert!(mem::size_of::<Event>() == EVENT_THRESHOLD);
501
502 const_assert!(mem::size_of::<ChannelCreate>() > EVENT_THRESHOLD);
504 const_assert!(mem::size_of::<ChannelDelete>() > EVENT_THRESHOLD);
505 const_assert!(mem::size_of::<ChannelUpdate>() > EVENT_THRESHOLD);
506 const_assert!(mem::size_of::<GuildScheduledEventCreate>() > EVENT_THRESHOLD);
507 const_assert!(mem::size_of::<GuildScheduledEventDelete>() > EVENT_THRESHOLD);
508 const_assert!(mem::size_of::<GuildScheduledEventUpdate>() > EVENT_THRESHOLD);
509 const_assert!(mem::size_of::<GuildUpdate>() > EVENT_THRESHOLD);
510 const_assert!(mem::size_of::<IntegrationCreate>() > EVENT_THRESHOLD);
511 const_assert!(mem::size_of::<IntegrationUpdate>() > EVENT_THRESHOLD);
512 const_assert!(mem::size_of::<InviteCreate>() > EVENT_THRESHOLD);
513 const_assert!(mem::size_of::<InteractionCreate>() > EVENT_THRESHOLD);
514 const_assert!(mem::size_of::<MemberAdd>() > EVENT_THRESHOLD);
515 const_assert!(mem::size_of::<MemberUpdate>() > EVENT_THRESHOLD);
516 const_assert!(mem::size_of::<MessageCreate>() > EVENT_THRESHOLD);
517 const_assert!(mem::size_of::<MessageUpdate>() > EVENT_THRESHOLD);
518 const_assert!(mem::size_of::<PresenceUpdate>() > EVENT_THRESHOLD);
519 const_assert!(mem::size_of::<ReactionAdd>() > EVENT_THRESHOLD);
520 const_assert!(mem::size_of::<ReactionRemove>() > EVENT_THRESHOLD);
521 const_assert!(mem::size_of::<ThreadCreate>() > EVENT_THRESHOLD);
522 const_assert!(mem::size_of::<ThreadMemberUpdate>() > EVENT_THRESHOLD);
523 const_assert!(mem::size_of::<ThreadUpdate>() > EVENT_THRESHOLD);
524 const_assert!(mem::size_of::<TypingStart>() > EVENT_THRESHOLD);
525
526 const_assert!(mem::size_of::<AutoModerationRuleCreate>() <= EVENT_THRESHOLD);
528 const_assert!(mem::size_of::<AutoModerationRuleDelete>() <= EVENT_THRESHOLD);
529 const_assert!(mem::size_of::<AutoModerationRuleUpdate>() <= EVENT_THRESHOLD);
530 const_assert!(mem::size_of::<AutoModerationActionExecution>() <= EVENT_THRESHOLD);
531 const_assert!(mem::size_of::<BanAdd>() <= EVENT_THRESHOLD);
532 const_assert!(mem::size_of::<BanRemove>() <= EVENT_THRESHOLD);
533 const_assert!(mem::size_of::<ChannelPinsUpdate>() <= EVENT_THRESHOLD);
534 const_assert!(mem::size_of::<CommandPermissionsUpdate>() <= EVENT_THRESHOLD);
535 const_assert!(mem::size_of::<GuildDelete>() <= EVENT_THRESHOLD);
536 const_assert!(mem::size_of::<GuildEmojisUpdate>() <= EVENT_THRESHOLD);
537 const_assert!(mem::size_of::<GuildIntegrationsUpdate>() <= EVENT_THRESHOLD);
538 const_assert!(mem::size_of::<GuildScheduledEventUserAdd>() <= EVENT_THRESHOLD);
539 const_assert!(mem::size_of::<GuildScheduledEventUserRemove>() <= EVENT_THRESHOLD);
540 const_assert!(mem::size_of::<IntegrationDelete>() <= EVENT_THRESHOLD);
541 const_assert!(mem::size_of::<InviteDelete>() <= EVENT_THRESHOLD);
542 const_assert!(mem::size_of::<MemberChunk>() <= EVENT_THRESHOLD);
543 const_assert!(mem::size_of::<MessageDelete>() <= EVENT_THRESHOLD);
544 const_assert!(mem::size_of::<MessageDeleteBulk>() <= EVENT_THRESHOLD);
545 const_assert!(mem::size_of::<MemberRemove>() <= EVENT_THRESHOLD);
546 const_assert!(mem::size_of::<RateLimited>() <= EVENT_THRESHOLD);
547 const_assert!(mem::size_of::<Ready>() <= EVENT_THRESHOLD);
548 const_assert!(mem::size_of::<ReactionRemoveAll>() <= EVENT_THRESHOLD);
549 const_assert!(mem::size_of::<RoleCreate>() <= EVENT_THRESHOLD);
550 const_assert!(mem::size_of::<RoleDelete>() <= EVENT_THRESHOLD);
551 const_assert!(mem::size_of::<RoleUpdate>() <= EVENT_THRESHOLD);
552 const_assert!(mem::size_of::<StageInstanceCreate>() <= EVENT_THRESHOLD);
553 const_assert!(mem::size_of::<StageInstanceDelete>() <= EVENT_THRESHOLD);
554 const_assert!(mem::size_of::<StageInstanceUpdate>() <= EVENT_THRESHOLD);
555 const_assert!(mem::size_of::<ThreadDelete>() <= EVENT_THRESHOLD);
556 const_assert!(mem::size_of::<ThreadListSync>() <= EVENT_THRESHOLD);
557 const_assert!(mem::size_of::<ThreadMembersUpdate>() <= EVENT_THRESHOLD);
558 const_assert!(mem::size_of::<UnavailableGuild>() <= EVENT_THRESHOLD);
559 const_assert!(mem::size_of::<UserUpdate>() <= EVENT_THRESHOLD);
560 const_assert!(mem::size_of::<VoiceServerUpdate>() <= EVENT_THRESHOLD);
561 const_assert!(mem::size_of::<WebhooksUpdate>() <= EVENT_THRESHOLD);
562 const_assert!(mem::size_of::<MessagePollVoteAdd>() <= EVENT_THRESHOLD);
563 const_assert!(mem::size_of::<MessagePollVoteRemove>() <= EVENT_THRESHOLD);
564}