1// Code generated by \"eventhandlers\"; DO NOT EDIT
2// See events.go
3
4package discordgo
5
6// Following are all the event types.
7// Event type values are used to match the events returned by Discord.
8// EventTypes surrounded by __ are synthetic and are internal to DiscordGo.
9const (
10	channelCreateEventType            = "CHANNEL_CREATE"
11	channelDeleteEventType            = "CHANNEL_DELETE"
12	channelPinsUpdateEventType        = "CHANNEL_PINS_UPDATE"
13	channelUpdateEventType            = "CHANNEL_UPDATE"
14	connectEventType                  = "__CONNECT__"
15	disconnectEventType               = "__DISCONNECT__"
16	eventEventType                    = "__EVENT__"
17	guildBanAddEventType              = "GUILD_BAN_ADD"
18	guildBanRemoveEventType           = "GUILD_BAN_REMOVE"
19	guildCreateEventType              = "GUILD_CREATE"
20	guildDeleteEventType              = "GUILD_DELETE"
21	guildEmojisUpdateEventType        = "GUILD_EMOJIS_UPDATE"
22	guildIntegrationsUpdateEventType  = "GUILD_INTEGRATIONS_UPDATE"
23	guildMemberAddEventType           = "GUILD_MEMBER_ADD"
24	guildMemberRemoveEventType        = "GUILD_MEMBER_REMOVE"
25	guildMemberUpdateEventType        = "GUILD_MEMBER_UPDATE"
26	guildMembersChunkEventType        = "GUILD_MEMBERS_CHUNK"
27	guildRoleCreateEventType          = "GUILD_ROLE_CREATE"
28	guildRoleDeleteEventType          = "GUILD_ROLE_DELETE"
29	guildRoleUpdateEventType          = "GUILD_ROLE_UPDATE"
30	guildUpdateEventType              = "GUILD_UPDATE"
31	messageAckEventType               = "MESSAGE_ACK"
32	messageCreateEventType            = "MESSAGE_CREATE"
33	messageDeleteEventType            = "MESSAGE_DELETE"
34	messageDeleteBulkEventType        = "MESSAGE_DELETE_BULK"
35	messageReactionAddEventType       = "MESSAGE_REACTION_ADD"
36	messageReactionRemoveEventType    = "MESSAGE_REACTION_REMOVE"
37	messageReactionRemoveAllEventType = "MESSAGE_REACTION_REMOVE_ALL"
38	messageUpdateEventType            = "MESSAGE_UPDATE"
39	presenceUpdateEventType           = "PRESENCE_UPDATE"
40	presencesReplaceEventType         = "PRESENCES_REPLACE"
41	rateLimitEventType                = "__RATE_LIMIT__"
42	readyEventType                    = "READY"
43	relationshipAddEventType          = "RELATIONSHIP_ADD"
44	relationshipRemoveEventType       = "RELATIONSHIP_REMOVE"
45	resumedEventType                  = "RESUMED"
46	typingStartEventType              = "TYPING_START"
47	userGuildSettingsUpdateEventType  = "USER_GUILD_SETTINGS_UPDATE"
48	userNoteUpdateEventType           = "USER_NOTE_UPDATE"
49	userSettingsUpdateEventType       = "USER_SETTINGS_UPDATE"
50	userUpdateEventType               = "USER_UPDATE"
51	voiceServerUpdateEventType        = "VOICE_SERVER_UPDATE"
52	voiceStateUpdateEventType         = "VOICE_STATE_UPDATE"
53	webhooksUpdateEventType           = "WEBHOOKS_UPDATE"
54)
55
56// channelCreateEventHandler is an event handler for ChannelCreate events.
57type channelCreateEventHandler func(*Session, *ChannelCreate)
58
59// Type returns the event type for ChannelCreate events.
60func (eh channelCreateEventHandler) Type() string {
61	return channelCreateEventType
62}
63
64// New returns a new instance of ChannelCreate.
65func (eh channelCreateEventHandler) New() interface{} {
66	return &ChannelCreate{}
67}
68
69// Handle is the handler for ChannelCreate events.
70func (eh channelCreateEventHandler) Handle(s *Session, i interface{}) {
71	if t, ok := i.(*ChannelCreate); ok {
72		eh(s, t)
73	}
74}
75
76// channelDeleteEventHandler is an event handler for ChannelDelete events.
77type channelDeleteEventHandler func(*Session, *ChannelDelete)
78
79// Type returns the event type for ChannelDelete events.
80func (eh channelDeleteEventHandler) Type() string {
81	return channelDeleteEventType
82}
83
84// New returns a new instance of ChannelDelete.
85func (eh channelDeleteEventHandler) New() interface{} {
86	return &ChannelDelete{}
87}
88
89// Handle is the handler for ChannelDelete events.
90func (eh channelDeleteEventHandler) Handle(s *Session, i interface{}) {
91	if t, ok := i.(*ChannelDelete); ok {
92		eh(s, t)
93	}
94}
95
96// channelPinsUpdateEventHandler is an event handler for ChannelPinsUpdate events.
97type channelPinsUpdateEventHandler func(*Session, *ChannelPinsUpdate)
98
99// Type returns the event type for ChannelPinsUpdate events.
100func (eh channelPinsUpdateEventHandler) Type() string {
101	return channelPinsUpdateEventType
102}
103
104// New returns a new instance of ChannelPinsUpdate.
105func (eh channelPinsUpdateEventHandler) New() interface{} {
106	return &ChannelPinsUpdate{}
107}
108
109// Handle is the handler for ChannelPinsUpdate events.
110func (eh channelPinsUpdateEventHandler) Handle(s *Session, i interface{}) {
111	if t, ok := i.(*ChannelPinsUpdate); ok {
112		eh(s, t)
113	}
114}
115
116// channelUpdateEventHandler is an event handler for ChannelUpdate events.
117type channelUpdateEventHandler func(*Session, *ChannelUpdate)
118
119// Type returns the event type for ChannelUpdate events.
120func (eh channelUpdateEventHandler) Type() string {
121	return channelUpdateEventType
122}
123
124// New returns a new instance of ChannelUpdate.
125func (eh channelUpdateEventHandler) New() interface{} {
126	return &ChannelUpdate{}
127}
128
129// Handle is the handler for ChannelUpdate events.
130func (eh channelUpdateEventHandler) Handle(s *Session, i interface{}) {
131	if t, ok := i.(*ChannelUpdate); ok {
132		eh(s, t)
133	}
134}
135
136// connectEventHandler is an event handler for Connect events.
137type connectEventHandler func(*Session, *Connect)
138
139// Type returns the event type for Connect events.
140func (eh connectEventHandler) Type() string {
141	return connectEventType
142}
143
144// Handle is the handler for Connect events.
145func (eh connectEventHandler) Handle(s *Session, i interface{}) {
146	if t, ok := i.(*Connect); ok {
147		eh(s, t)
148	}
149}
150
151// disconnectEventHandler is an event handler for Disconnect events.
152type disconnectEventHandler func(*Session, *Disconnect)
153
154// Type returns the event type for Disconnect events.
155func (eh disconnectEventHandler) Type() string {
156	return disconnectEventType
157}
158
159// Handle is the handler for Disconnect events.
160func (eh disconnectEventHandler) Handle(s *Session, i interface{}) {
161	if t, ok := i.(*Disconnect); ok {
162		eh(s, t)
163	}
164}
165
166// eventEventHandler is an event handler for Event events.
167type eventEventHandler func(*Session, *Event)
168
169// Type returns the event type for Event events.
170func (eh eventEventHandler) Type() string {
171	return eventEventType
172}
173
174// Handle is the handler for Event events.
175func (eh eventEventHandler) Handle(s *Session, i interface{}) {
176	if t, ok := i.(*Event); ok {
177		eh(s, t)
178	}
179}
180
181// guildBanAddEventHandler is an event handler for GuildBanAdd events.
182type guildBanAddEventHandler func(*Session, *GuildBanAdd)
183
184// Type returns the event type for GuildBanAdd events.
185func (eh guildBanAddEventHandler) Type() string {
186	return guildBanAddEventType
187}
188
189// New returns a new instance of GuildBanAdd.
190func (eh guildBanAddEventHandler) New() interface{} {
191	return &GuildBanAdd{}
192}
193
194// Handle is the handler for GuildBanAdd events.
195func (eh guildBanAddEventHandler) Handle(s *Session, i interface{}) {
196	if t, ok := i.(*GuildBanAdd); ok {
197		eh(s, t)
198	}
199}
200
201// guildBanRemoveEventHandler is an event handler for GuildBanRemove events.
202type guildBanRemoveEventHandler func(*Session, *GuildBanRemove)
203
204// Type returns the event type for GuildBanRemove events.
205func (eh guildBanRemoveEventHandler) Type() string {
206	return guildBanRemoveEventType
207}
208
209// New returns a new instance of GuildBanRemove.
210func (eh guildBanRemoveEventHandler) New() interface{} {
211	return &GuildBanRemove{}
212}
213
214// Handle is the handler for GuildBanRemove events.
215func (eh guildBanRemoveEventHandler) Handle(s *Session, i interface{}) {
216	if t, ok := i.(*GuildBanRemove); ok {
217		eh(s, t)
218	}
219}
220
221// guildCreateEventHandler is an event handler for GuildCreate events.
222type guildCreateEventHandler func(*Session, *GuildCreate)
223
224// Type returns the event type for GuildCreate events.
225func (eh guildCreateEventHandler) Type() string {
226	return guildCreateEventType
227}
228
229// New returns a new instance of GuildCreate.
230func (eh guildCreateEventHandler) New() interface{} {
231	return &GuildCreate{}
232}
233
234// Handle is the handler for GuildCreate events.
235func (eh guildCreateEventHandler) Handle(s *Session, i interface{}) {
236	if t, ok := i.(*GuildCreate); ok {
237		eh(s, t)
238	}
239}
240
241// guildDeleteEventHandler is an event handler for GuildDelete events.
242type guildDeleteEventHandler func(*Session, *GuildDelete)
243
244// Type returns the event type for GuildDelete events.
245func (eh guildDeleteEventHandler) Type() string {
246	return guildDeleteEventType
247}
248
249// New returns a new instance of GuildDelete.
250func (eh guildDeleteEventHandler) New() interface{} {
251	return &GuildDelete{}
252}
253
254// Handle is the handler for GuildDelete events.
255func (eh guildDeleteEventHandler) Handle(s *Session, i interface{}) {
256	if t, ok := i.(*GuildDelete); ok {
257		eh(s, t)
258	}
259}
260
261// guildEmojisUpdateEventHandler is an event handler for GuildEmojisUpdate events.
262type guildEmojisUpdateEventHandler func(*Session, *GuildEmojisUpdate)
263
264// Type returns the event type for GuildEmojisUpdate events.
265func (eh guildEmojisUpdateEventHandler) Type() string {
266	return guildEmojisUpdateEventType
267}
268
269// New returns a new instance of GuildEmojisUpdate.
270func (eh guildEmojisUpdateEventHandler) New() interface{} {
271	return &GuildEmojisUpdate{}
272}
273
274// Handle is the handler for GuildEmojisUpdate events.
275func (eh guildEmojisUpdateEventHandler) Handle(s *Session, i interface{}) {
276	if t, ok := i.(*GuildEmojisUpdate); ok {
277		eh(s, t)
278	}
279}
280
281// guildIntegrationsUpdateEventHandler is an event handler for GuildIntegrationsUpdate events.
282type guildIntegrationsUpdateEventHandler func(*Session, *GuildIntegrationsUpdate)
283
284// Type returns the event type for GuildIntegrationsUpdate events.
285func (eh guildIntegrationsUpdateEventHandler) Type() string {
286	return guildIntegrationsUpdateEventType
287}
288
289// New returns a new instance of GuildIntegrationsUpdate.
290func (eh guildIntegrationsUpdateEventHandler) New() interface{} {
291	return &GuildIntegrationsUpdate{}
292}
293
294// Handle is the handler for GuildIntegrationsUpdate events.
295func (eh guildIntegrationsUpdateEventHandler) Handle(s *Session, i interface{}) {
296	if t, ok := i.(*GuildIntegrationsUpdate); ok {
297		eh(s, t)
298	}
299}
300
301// guildMemberAddEventHandler is an event handler for GuildMemberAdd events.
302type guildMemberAddEventHandler func(*Session, *GuildMemberAdd)
303
304// Type returns the event type for GuildMemberAdd events.
305func (eh guildMemberAddEventHandler) Type() string {
306	return guildMemberAddEventType
307}
308
309// New returns a new instance of GuildMemberAdd.
310func (eh guildMemberAddEventHandler) New() interface{} {
311	return &GuildMemberAdd{}
312}
313
314// Handle is the handler for GuildMemberAdd events.
315func (eh guildMemberAddEventHandler) Handle(s *Session, i interface{}) {
316	if t, ok := i.(*GuildMemberAdd); ok {
317		eh(s, t)
318	}
319}
320
321// guildMemberRemoveEventHandler is an event handler for GuildMemberRemove events.
322type guildMemberRemoveEventHandler func(*Session, *GuildMemberRemove)
323
324// Type returns the event type for GuildMemberRemove events.
325func (eh guildMemberRemoveEventHandler) Type() string {
326	return guildMemberRemoveEventType
327}
328
329// New returns a new instance of GuildMemberRemove.
330func (eh guildMemberRemoveEventHandler) New() interface{} {
331	return &GuildMemberRemove{}
332}
333
334// Handle is the handler for GuildMemberRemove events.
335func (eh guildMemberRemoveEventHandler) Handle(s *Session, i interface{}) {
336	if t, ok := i.(*GuildMemberRemove); ok {
337		eh(s, t)
338	}
339}
340
341// guildMemberUpdateEventHandler is an event handler for GuildMemberUpdate events.
342type guildMemberUpdateEventHandler func(*Session, *GuildMemberUpdate)
343
344// Type returns the event type for GuildMemberUpdate events.
345func (eh guildMemberUpdateEventHandler) Type() string {
346	return guildMemberUpdateEventType
347}
348
349// New returns a new instance of GuildMemberUpdate.
350func (eh guildMemberUpdateEventHandler) New() interface{} {
351	return &GuildMemberUpdate{}
352}
353
354// Handle is the handler for GuildMemberUpdate events.
355func (eh guildMemberUpdateEventHandler) Handle(s *Session, i interface{}) {
356	if t, ok := i.(*GuildMemberUpdate); ok {
357		eh(s, t)
358	}
359}
360
361// guildMembersChunkEventHandler is an event handler for GuildMembersChunk events.
362type guildMembersChunkEventHandler func(*Session, *GuildMembersChunk)
363
364// Type returns the event type for GuildMembersChunk events.
365func (eh guildMembersChunkEventHandler) Type() string {
366	return guildMembersChunkEventType
367}
368
369// New returns a new instance of GuildMembersChunk.
370func (eh guildMembersChunkEventHandler) New() interface{} {
371	return &GuildMembersChunk{}
372}
373
374// Handle is the handler for GuildMembersChunk events.
375func (eh guildMembersChunkEventHandler) Handle(s *Session, i interface{}) {
376	if t, ok := i.(*GuildMembersChunk); ok {
377		eh(s, t)
378	}
379}
380
381// guildRoleCreateEventHandler is an event handler for GuildRoleCreate events.
382type guildRoleCreateEventHandler func(*Session, *GuildRoleCreate)
383
384// Type returns the event type for GuildRoleCreate events.
385func (eh guildRoleCreateEventHandler) Type() string {
386	return guildRoleCreateEventType
387}
388
389// New returns a new instance of GuildRoleCreate.
390func (eh guildRoleCreateEventHandler) New() interface{} {
391	return &GuildRoleCreate{}
392}
393
394// Handle is the handler for GuildRoleCreate events.
395func (eh guildRoleCreateEventHandler) Handle(s *Session, i interface{}) {
396	if t, ok := i.(*GuildRoleCreate); ok {
397		eh(s, t)
398	}
399}
400
401// guildRoleDeleteEventHandler is an event handler for GuildRoleDelete events.
402type guildRoleDeleteEventHandler func(*Session, *GuildRoleDelete)
403
404// Type returns the event type for GuildRoleDelete events.
405func (eh guildRoleDeleteEventHandler) Type() string {
406	return guildRoleDeleteEventType
407}
408
409// New returns a new instance of GuildRoleDelete.
410func (eh guildRoleDeleteEventHandler) New() interface{} {
411	return &GuildRoleDelete{}
412}
413
414// Handle is the handler for GuildRoleDelete events.
415func (eh guildRoleDeleteEventHandler) Handle(s *Session, i interface{}) {
416	if t, ok := i.(*GuildRoleDelete); ok {
417		eh(s, t)
418	}
419}
420
421// guildRoleUpdateEventHandler is an event handler for GuildRoleUpdate events.
422type guildRoleUpdateEventHandler func(*Session, *GuildRoleUpdate)
423
424// Type returns the event type for GuildRoleUpdate events.
425func (eh guildRoleUpdateEventHandler) Type() string {
426	return guildRoleUpdateEventType
427}
428
429// New returns a new instance of GuildRoleUpdate.
430func (eh guildRoleUpdateEventHandler) New() interface{} {
431	return &GuildRoleUpdate{}
432}
433
434// Handle is the handler for GuildRoleUpdate events.
435func (eh guildRoleUpdateEventHandler) Handle(s *Session, i interface{}) {
436	if t, ok := i.(*GuildRoleUpdate); ok {
437		eh(s, t)
438	}
439}
440
441// guildUpdateEventHandler is an event handler for GuildUpdate events.
442type guildUpdateEventHandler func(*Session, *GuildUpdate)
443
444// Type returns the event type for GuildUpdate events.
445func (eh guildUpdateEventHandler) Type() string {
446	return guildUpdateEventType
447}
448
449// New returns a new instance of GuildUpdate.
450func (eh guildUpdateEventHandler) New() interface{} {
451	return &GuildUpdate{}
452}
453
454// Handle is the handler for GuildUpdate events.
455func (eh guildUpdateEventHandler) Handle(s *Session, i interface{}) {
456	if t, ok := i.(*GuildUpdate); ok {
457		eh(s, t)
458	}
459}
460
461// messageAckEventHandler is an event handler for MessageAck events.
462type messageAckEventHandler func(*Session, *MessageAck)
463
464// Type returns the event type for MessageAck events.
465func (eh messageAckEventHandler) Type() string {
466	return messageAckEventType
467}
468
469// New returns a new instance of MessageAck.
470func (eh messageAckEventHandler) New() interface{} {
471	return &MessageAck{}
472}
473
474// Handle is the handler for MessageAck events.
475func (eh messageAckEventHandler) Handle(s *Session, i interface{}) {
476	if t, ok := i.(*MessageAck); ok {
477		eh(s, t)
478	}
479}
480
481// messageCreateEventHandler is an event handler for MessageCreate events.
482type messageCreateEventHandler func(*Session, *MessageCreate)
483
484// Type returns the event type for MessageCreate events.
485func (eh messageCreateEventHandler) Type() string {
486	return messageCreateEventType
487}
488
489// New returns a new instance of MessageCreate.
490func (eh messageCreateEventHandler) New() interface{} {
491	return &MessageCreate{}
492}
493
494// Handle is the handler for MessageCreate events.
495func (eh messageCreateEventHandler) Handle(s *Session, i interface{}) {
496	if t, ok := i.(*MessageCreate); ok {
497		eh(s, t)
498	}
499}
500
501// messageDeleteEventHandler is an event handler for MessageDelete events.
502type messageDeleteEventHandler func(*Session, *MessageDelete)
503
504// Type returns the event type for MessageDelete events.
505func (eh messageDeleteEventHandler) Type() string {
506	return messageDeleteEventType
507}
508
509// New returns a new instance of MessageDelete.
510func (eh messageDeleteEventHandler) New() interface{} {
511	return &MessageDelete{}
512}
513
514// Handle is the handler for MessageDelete events.
515func (eh messageDeleteEventHandler) Handle(s *Session, i interface{}) {
516	if t, ok := i.(*MessageDelete); ok {
517		eh(s, t)
518	}
519}
520
521// messageDeleteBulkEventHandler is an event handler for MessageDeleteBulk events.
522type messageDeleteBulkEventHandler func(*Session, *MessageDeleteBulk)
523
524// Type returns the event type for MessageDeleteBulk events.
525func (eh messageDeleteBulkEventHandler) Type() string {
526	return messageDeleteBulkEventType
527}
528
529// New returns a new instance of MessageDeleteBulk.
530func (eh messageDeleteBulkEventHandler) New() interface{} {
531	return &MessageDeleteBulk{}
532}
533
534// Handle is the handler for MessageDeleteBulk events.
535func (eh messageDeleteBulkEventHandler) Handle(s *Session, i interface{}) {
536	if t, ok := i.(*MessageDeleteBulk); ok {
537		eh(s, t)
538	}
539}
540
541// messageReactionAddEventHandler is an event handler for MessageReactionAdd events.
542type messageReactionAddEventHandler func(*Session, *MessageReactionAdd)
543
544// Type returns the event type for MessageReactionAdd events.
545func (eh messageReactionAddEventHandler) Type() string {
546	return messageReactionAddEventType
547}
548
549// New returns a new instance of MessageReactionAdd.
550func (eh messageReactionAddEventHandler) New() interface{} {
551	return &MessageReactionAdd{}
552}
553
554// Handle is the handler for MessageReactionAdd events.
555func (eh messageReactionAddEventHandler) Handle(s *Session, i interface{}) {
556	if t, ok := i.(*MessageReactionAdd); ok {
557		eh(s, t)
558	}
559}
560
561// messageReactionRemoveEventHandler is an event handler for MessageReactionRemove events.
562type messageReactionRemoveEventHandler func(*Session, *MessageReactionRemove)
563
564// Type returns the event type for MessageReactionRemove events.
565func (eh messageReactionRemoveEventHandler) Type() string {
566	return messageReactionRemoveEventType
567}
568
569// New returns a new instance of MessageReactionRemove.
570func (eh messageReactionRemoveEventHandler) New() interface{} {
571	return &MessageReactionRemove{}
572}
573
574// Handle is the handler for MessageReactionRemove events.
575func (eh messageReactionRemoveEventHandler) Handle(s *Session, i interface{}) {
576	if t, ok := i.(*MessageReactionRemove); ok {
577		eh(s, t)
578	}
579}
580
581// messageReactionRemoveAllEventHandler is an event handler for MessageReactionRemoveAll events.
582type messageReactionRemoveAllEventHandler func(*Session, *MessageReactionRemoveAll)
583
584// Type returns the event type for MessageReactionRemoveAll events.
585func (eh messageReactionRemoveAllEventHandler) Type() string {
586	return messageReactionRemoveAllEventType
587}
588
589// New returns a new instance of MessageReactionRemoveAll.
590func (eh messageReactionRemoveAllEventHandler) New() interface{} {
591	return &MessageReactionRemoveAll{}
592}
593
594// Handle is the handler for MessageReactionRemoveAll events.
595func (eh messageReactionRemoveAllEventHandler) Handle(s *Session, i interface{}) {
596	if t, ok := i.(*MessageReactionRemoveAll); ok {
597		eh(s, t)
598	}
599}
600
601// messageUpdateEventHandler is an event handler for MessageUpdate events.
602type messageUpdateEventHandler func(*Session, *MessageUpdate)
603
604// Type returns the event type for MessageUpdate events.
605func (eh messageUpdateEventHandler) Type() string {
606	return messageUpdateEventType
607}
608
609// New returns a new instance of MessageUpdate.
610func (eh messageUpdateEventHandler) New() interface{} {
611	return &MessageUpdate{}
612}
613
614// Handle is the handler for MessageUpdate events.
615func (eh messageUpdateEventHandler) Handle(s *Session, i interface{}) {
616	if t, ok := i.(*MessageUpdate); ok {
617		eh(s, t)
618	}
619}
620
621// presenceUpdateEventHandler is an event handler for PresenceUpdate events.
622type presenceUpdateEventHandler func(*Session, *PresenceUpdate)
623
624// Type returns the event type for PresenceUpdate events.
625func (eh presenceUpdateEventHandler) Type() string {
626	return presenceUpdateEventType
627}
628
629// New returns a new instance of PresenceUpdate.
630func (eh presenceUpdateEventHandler) New() interface{} {
631	return &PresenceUpdate{}
632}
633
634// Handle is the handler for PresenceUpdate events.
635func (eh presenceUpdateEventHandler) Handle(s *Session, i interface{}) {
636	if t, ok := i.(*PresenceUpdate); ok {
637		eh(s, t)
638	}
639}
640
641// presencesReplaceEventHandler is an event handler for PresencesReplace events.
642type presencesReplaceEventHandler func(*Session, *PresencesReplace)
643
644// Type returns the event type for PresencesReplace events.
645func (eh presencesReplaceEventHandler) Type() string {
646	return presencesReplaceEventType
647}
648
649// New returns a new instance of PresencesReplace.
650func (eh presencesReplaceEventHandler) New() interface{} {
651	return &PresencesReplace{}
652}
653
654// Handle is the handler for PresencesReplace events.
655func (eh presencesReplaceEventHandler) Handle(s *Session, i interface{}) {
656	if t, ok := i.(*PresencesReplace); ok {
657		eh(s, t)
658	}
659}
660
661// rateLimitEventHandler is an event handler for RateLimit events.
662type rateLimitEventHandler func(*Session, *RateLimit)
663
664// Type returns the event type for RateLimit events.
665func (eh rateLimitEventHandler) Type() string {
666	return rateLimitEventType
667}
668
669// Handle is the handler for RateLimit events.
670func (eh rateLimitEventHandler) Handle(s *Session, i interface{}) {
671	if t, ok := i.(*RateLimit); ok {
672		eh(s, t)
673	}
674}
675
676// readyEventHandler is an event handler for Ready events.
677type readyEventHandler func(*Session, *Ready)
678
679// Type returns the event type for Ready events.
680func (eh readyEventHandler) Type() string {
681	return readyEventType
682}
683
684// New returns a new instance of Ready.
685func (eh readyEventHandler) New() interface{} {
686	return &Ready{}
687}
688
689// Handle is the handler for Ready events.
690func (eh readyEventHandler) Handle(s *Session, i interface{}) {
691	if t, ok := i.(*Ready); ok {
692		eh(s, t)
693	}
694}
695
696// relationshipAddEventHandler is an event handler for RelationshipAdd events.
697type relationshipAddEventHandler func(*Session, *RelationshipAdd)
698
699// Type returns the event type for RelationshipAdd events.
700func (eh relationshipAddEventHandler) Type() string {
701	return relationshipAddEventType
702}
703
704// New returns a new instance of RelationshipAdd.
705func (eh relationshipAddEventHandler) New() interface{} {
706	return &RelationshipAdd{}
707}
708
709// Handle is the handler for RelationshipAdd events.
710func (eh relationshipAddEventHandler) Handle(s *Session, i interface{}) {
711	if t, ok := i.(*RelationshipAdd); ok {
712		eh(s, t)
713	}
714}
715
716// relationshipRemoveEventHandler is an event handler for RelationshipRemove events.
717type relationshipRemoveEventHandler func(*Session, *RelationshipRemove)
718
719// Type returns the event type for RelationshipRemove events.
720func (eh relationshipRemoveEventHandler) Type() string {
721	return relationshipRemoveEventType
722}
723
724// New returns a new instance of RelationshipRemove.
725func (eh relationshipRemoveEventHandler) New() interface{} {
726	return &RelationshipRemove{}
727}
728
729// Handle is the handler for RelationshipRemove events.
730func (eh relationshipRemoveEventHandler) Handle(s *Session, i interface{}) {
731	if t, ok := i.(*RelationshipRemove); ok {
732		eh(s, t)
733	}
734}
735
736// resumedEventHandler is an event handler for Resumed events.
737type resumedEventHandler func(*Session, *Resumed)
738
739// Type returns the event type for Resumed events.
740func (eh resumedEventHandler) Type() string {
741	return resumedEventType
742}
743
744// New returns a new instance of Resumed.
745func (eh resumedEventHandler) New() interface{} {
746	return &Resumed{}
747}
748
749// Handle is the handler for Resumed events.
750func (eh resumedEventHandler) Handle(s *Session, i interface{}) {
751	if t, ok := i.(*Resumed); ok {
752		eh(s, t)
753	}
754}
755
756// typingStartEventHandler is an event handler for TypingStart events.
757type typingStartEventHandler func(*Session, *TypingStart)
758
759// Type returns the event type for TypingStart events.
760func (eh typingStartEventHandler) Type() string {
761	return typingStartEventType
762}
763
764// New returns a new instance of TypingStart.
765func (eh typingStartEventHandler) New() interface{} {
766	return &TypingStart{}
767}
768
769// Handle is the handler for TypingStart events.
770func (eh typingStartEventHandler) Handle(s *Session, i interface{}) {
771	if t, ok := i.(*TypingStart); ok {
772		eh(s, t)
773	}
774}
775
776// userGuildSettingsUpdateEventHandler is an event handler for UserGuildSettingsUpdate events.
777type userGuildSettingsUpdateEventHandler func(*Session, *UserGuildSettingsUpdate)
778
779// Type returns the event type for UserGuildSettingsUpdate events.
780func (eh userGuildSettingsUpdateEventHandler) Type() string {
781	return userGuildSettingsUpdateEventType
782}
783
784// New returns a new instance of UserGuildSettingsUpdate.
785func (eh userGuildSettingsUpdateEventHandler) New() interface{} {
786	return &UserGuildSettingsUpdate{}
787}
788
789// Handle is the handler for UserGuildSettingsUpdate events.
790func (eh userGuildSettingsUpdateEventHandler) Handle(s *Session, i interface{}) {
791	if t, ok := i.(*UserGuildSettingsUpdate); ok {
792		eh(s, t)
793	}
794}
795
796// userNoteUpdateEventHandler is an event handler for UserNoteUpdate events.
797type userNoteUpdateEventHandler func(*Session, *UserNoteUpdate)
798
799// Type returns the event type for UserNoteUpdate events.
800func (eh userNoteUpdateEventHandler) Type() string {
801	return userNoteUpdateEventType
802}
803
804// New returns a new instance of UserNoteUpdate.
805func (eh userNoteUpdateEventHandler) New() interface{} {
806	return &UserNoteUpdate{}
807}
808
809// Handle is the handler for UserNoteUpdate events.
810func (eh userNoteUpdateEventHandler) Handle(s *Session, i interface{}) {
811	if t, ok := i.(*UserNoteUpdate); ok {
812		eh(s, t)
813	}
814}
815
816// userSettingsUpdateEventHandler is an event handler for UserSettingsUpdate events.
817type userSettingsUpdateEventHandler func(*Session, *UserSettingsUpdate)
818
819// Type returns the event type for UserSettingsUpdate events.
820func (eh userSettingsUpdateEventHandler) Type() string {
821	return userSettingsUpdateEventType
822}
823
824// New returns a new instance of UserSettingsUpdate.
825func (eh userSettingsUpdateEventHandler) New() interface{} {
826	return &UserSettingsUpdate{}
827}
828
829// Handle is the handler for UserSettingsUpdate events.
830func (eh userSettingsUpdateEventHandler) Handle(s *Session, i interface{}) {
831	if t, ok := i.(*UserSettingsUpdate); ok {
832		eh(s, t)
833	}
834}
835
836// userUpdateEventHandler is an event handler for UserUpdate events.
837type userUpdateEventHandler func(*Session, *UserUpdate)
838
839// Type returns the event type for UserUpdate events.
840func (eh userUpdateEventHandler) Type() string {
841	return userUpdateEventType
842}
843
844// New returns a new instance of UserUpdate.
845func (eh userUpdateEventHandler) New() interface{} {
846	return &UserUpdate{}
847}
848
849// Handle is the handler for UserUpdate events.
850func (eh userUpdateEventHandler) Handle(s *Session, i interface{}) {
851	if t, ok := i.(*UserUpdate); ok {
852		eh(s, t)
853	}
854}
855
856// voiceServerUpdateEventHandler is an event handler for VoiceServerUpdate events.
857type voiceServerUpdateEventHandler func(*Session, *VoiceServerUpdate)
858
859// Type returns the event type for VoiceServerUpdate events.
860func (eh voiceServerUpdateEventHandler) Type() string {
861	return voiceServerUpdateEventType
862}
863
864// New returns a new instance of VoiceServerUpdate.
865func (eh voiceServerUpdateEventHandler) New() interface{} {
866	return &VoiceServerUpdate{}
867}
868
869// Handle is the handler for VoiceServerUpdate events.
870func (eh voiceServerUpdateEventHandler) Handle(s *Session, i interface{}) {
871	if t, ok := i.(*VoiceServerUpdate); ok {
872		eh(s, t)
873	}
874}
875
876// voiceStateUpdateEventHandler is an event handler for VoiceStateUpdate events.
877type voiceStateUpdateEventHandler func(*Session, *VoiceStateUpdate)
878
879// Type returns the event type for VoiceStateUpdate events.
880func (eh voiceStateUpdateEventHandler) Type() string {
881	return voiceStateUpdateEventType
882}
883
884// New returns a new instance of VoiceStateUpdate.
885func (eh voiceStateUpdateEventHandler) New() interface{} {
886	return &VoiceStateUpdate{}
887}
888
889// Handle is the handler for VoiceStateUpdate events.
890func (eh voiceStateUpdateEventHandler) Handle(s *Session, i interface{}) {
891	if t, ok := i.(*VoiceStateUpdate); ok {
892		eh(s, t)
893	}
894}
895
896// webhooksUpdateEventHandler is an event handler for WebhooksUpdate events.
897type webhooksUpdateEventHandler func(*Session, *WebhooksUpdate)
898
899// Type returns the event type for WebhooksUpdate events.
900func (eh webhooksUpdateEventHandler) Type() string {
901	return webhooksUpdateEventType
902}
903
904// New returns a new instance of WebhooksUpdate.
905func (eh webhooksUpdateEventHandler) New() interface{} {
906	return &WebhooksUpdate{}
907}
908
909// Handle is the handler for WebhooksUpdate events.
910func (eh webhooksUpdateEventHandler) Handle(s *Session, i interface{}) {
911	if t, ok := i.(*WebhooksUpdate); ok {
912		eh(s, t)
913	}
914}
915
916func handlerForInterface(handler interface{}) EventHandler {
917	switch v := handler.(type) {
918	case func(*Session, interface{}):
919		return interfaceEventHandler(v)
920	case func(*Session, *ChannelCreate):
921		return channelCreateEventHandler(v)
922	case func(*Session, *ChannelDelete):
923		return channelDeleteEventHandler(v)
924	case func(*Session, *ChannelPinsUpdate):
925		return channelPinsUpdateEventHandler(v)
926	case func(*Session, *ChannelUpdate):
927		return channelUpdateEventHandler(v)
928	case func(*Session, *Connect):
929		return connectEventHandler(v)
930	case func(*Session, *Disconnect):
931		return disconnectEventHandler(v)
932	case func(*Session, *Event):
933		return eventEventHandler(v)
934	case func(*Session, *GuildBanAdd):
935		return guildBanAddEventHandler(v)
936	case func(*Session, *GuildBanRemove):
937		return guildBanRemoveEventHandler(v)
938	case func(*Session, *GuildCreate):
939		return guildCreateEventHandler(v)
940	case func(*Session, *GuildDelete):
941		return guildDeleteEventHandler(v)
942	case func(*Session, *GuildEmojisUpdate):
943		return guildEmojisUpdateEventHandler(v)
944	case func(*Session, *GuildIntegrationsUpdate):
945		return guildIntegrationsUpdateEventHandler(v)
946	case func(*Session, *GuildMemberAdd):
947		return guildMemberAddEventHandler(v)
948	case func(*Session, *GuildMemberRemove):
949		return guildMemberRemoveEventHandler(v)
950	case func(*Session, *GuildMemberUpdate):
951		return guildMemberUpdateEventHandler(v)
952	case func(*Session, *GuildMembersChunk):
953		return guildMembersChunkEventHandler(v)
954	case func(*Session, *GuildRoleCreate):
955		return guildRoleCreateEventHandler(v)
956	case func(*Session, *GuildRoleDelete):
957		return guildRoleDeleteEventHandler(v)
958	case func(*Session, *GuildRoleUpdate):
959		return guildRoleUpdateEventHandler(v)
960	case func(*Session, *GuildUpdate):
961		return guildUpdateEventHandler(v)
962	case func(*Session, *MessageAck):
963		return messageAckEventHandler(v)
964	case func(*Session, *MessageCreate):
965		return messageCreateEventHandler(v)
966	case func(*Session, *MessageDelete):
967		return messageDeleteEventHandler(v)
968	case func(*Session, *MessageDeleteBulk):
969		return messageDeleteBulkEventHandler(v)
970	case func(*Session, *MessageReactionAdd):
971		return messageReactionAddEventHandler(v)
972	case func(*Session, *MessageReactionRemove):
973		return messageReactionRemoveEventHandler(v)
974	case func(*Session, *MessageReactionRemoveAll):
975		return messageReactionRemoveAllEventHandler(v)
976	case func(*Session, *MessageUpdate):
977		return messageUpdateEventHandler(v)
978	case func(*Session, *PresenceUpdate):
979		return presenceUpdateEventHandler(v)
980	case func(*Session, *PresencesReplace):
981		return presencesReplaceEventHandler(v)
982	case func(*Session, *RateLimit):
983		return rateLimitEventHandler(v)
984	case func(*Session, *Ready):
985		return readyEventHandler(v)
986	case func(*Session, *RelationshipAdd):
987		return relationshipAddEventHandler(v)
988	case func(*Session, *RelationshipRemove):
989		return relationshipRemoveEventHandler(v)
990	case func(*Session, *Resumed):
991		return resumedEventHandler(v)
992	case func(*Session, *TypingStart):
993		return typingStartEventHandler(v)
994	case func(*Session, *UserGuildSettingsUpdate):
995		return userGuildSettingsUpdateEventHandler(v)
996	case func(*Session, *UserNoteUpdate):
997		return userNoteUpdateEventHandler(v)
998	case func(*Session, *UserSettingsUpdate):
999		return userSettingsUpdateEventHandler(v)
1000	case func(*Session, *UserUpdate):
1001		return userUpdateEventHandler(v)
1002	case func(*Session, *VoiceServerUpdate):
1003		return voiceServerUpdateEventHandler(v)
1004	case func(*Session, *VoiceStateUpdate):
1005		return voiceStateUpdateEventHandler(v)
1006	case func(*Session, *WebhooksUpdate):
1007		return webhooksUpdateEventHandler(v)
1008	}
1009
1010	return nil
1011}
1012
1013func init() {
1014	registerInterfaceProvider(channelCreateEventHandler(nil))
1015	registerInterfaceProvider(channelDeleteEventHandler(nil))
1016	registerInterfaceProvider(channelPinsUpdateEventHandler(nil))
1017	registerInterfaceProvider(channelUpdateEventHandler(nil))
1018	registerInterfaceProvider(guildBanAddEventHandler(nil))
1019	registerInterfaceProvider(guildBanRemoveEventHandler(nil))
1020	registerInterfaceProvider(guildCreateEventHandler(nil))
1021	registerInterfaceProvider(guildDeleteEventHandler(nil))
1022	registerInterfaceProvider(guildEmojisUpdateEventHandler(nil))
1023	registerInterfaceProvider(guildIntegrationsUpdateEventHandler(nil))
1024	registerInterfaceProvider(guildMemberAddEventHandler(nil))
1025	registerInterfaceProvider(guildMemberRemoveEventHandler(nil))
1026	registerInterfaceProvider(guildMemberUpdateEventHandler(nil))
1027	registerInterfaceProvider(guildMembersChunkEventHandler(nil))
1028	registerInterfaceProvider(guildRoleCreateEventHandler(nil))
1029	registerInterfaceProvider(guildRoleDeleteEventHandler(nil))
1030	registerInterfaceProvider(guildRoleUpdateEventHandler(nil))
1031	registerInterfaceProvider(guildUpdateEventHandler(nil))
1032	registerInterfaceProvider(messageAckEventHandler(nil))
1033	registerInterfaceProvider(messageCreateEventHandler(nil))
1034	registerInterfaceProvider(messageDeleteEventHandler(nil))
1035	registerInterfaceProvider(messageDeleteBulkEventHandler(nil))
1036	registerInterfaceProvider(messageReactionAddEventHandler(nil))
1037	registerInterfaceProvider(messageReactionRemoveEventHandler(nil))
1038	registerInterfaceProvider(messageReactionRemoveAllEventHandler(nil))
1039	registerInterfaceProvider(messageUpdateEventHandler(nil))
1040	registerInterfaceProvider(presenceUpdateEventHandler(nil))
1041	registerInterfaceProvider(presencesReplaceEventHandler(nil))
1042	registerInterfaceProvider(readyEventHandler(nil))
1043	registerInterfaceProvider(relationshipAddEventHandler(nil))
1044	registerInterfaceProvider(relationshipRemoveEventHandler(nil))
1045	registerInterfaceProvider(resumedEventHandler(nil))
1046	registerInterfaceProvider(typingStartEventHandler(nil))
1047	registerInterfaceProvider(userGuildSettingsUpdateEventHandler(nil))
1048	registerInterfaceProvider(userNoteUpdateEventHandler(nil))
1049	registerInterfaceProvider(userSettingsUpdateEventHandler(nil))
1050	registerInterfaceProvider(userUpdateEventHandler(nil))
1051	registerInterfaceProvider(voiceServerUpdateEventHandler(nil))
1052	registerInterfaceProvider(voiceStateUpdateEventHandler(nil))
1053	registerInterfaceProvider(webhooksUpdateEventHandler(nil))
1054}
1055