AddHandler now returns a func that can remove the handler. The handlers map is now guarded by its own mutex. Moved eventMap to events.go for readability. Improved documentation.
142 lines
3.6 KiB
Go
142 lines
3.6 KiB
Go
package discordgo
|
|
|
|
// eventToInterface is a mapping of Discord WSAPI events to their
|
|
// DiscordGo event container.
|
|
// Each Discord WSAPI event maps to a unique interface.
|
|
// Use Session.AddHandler with one of these types to handle that
|
|
// type of event.
|
|
// eg:
|
|
// Session.AddHandler(func(s *discordgo.Session, m *discordgo.MessageCreate) {
|
|
// })
|
|
//
|
|
// or:
|
|
// Session.AddHandler(func(s *discordgo.Session, m *discordgo.PresenceUpdate) {
|
|
// })
|
|
var eventToInterface = map[string]interface{}{
|
|
"CHANNEL_CREATE": ChannelCreate{},
|
|
"CHANNEL_UPDATE": ChannelUpdate{},
|
|
"CHANNEL_DELETE": ChannelDelete{},
|
|
"GUILD_CREATE": GuildCreate{},
|
|
"GUILD_UPDATE": GuildUpdate{},
|
|
"GUILD_DELETE": GuildDelete{},
|
|
"GUILD_BAN_ADD": GuildBanAdd{},
|
|
"GUILD_BAN_REMOVE": GuildBanRemove{},
|
|
"GUILD_MEMBER_ADD": GuildMemberAdd{},
|
|
"GUILD_MEMBER_UPDATE": GuildMemberUpdate{},
|
|
"GUILD_MEMBER_REMOVE": GuildMemberRemove{},
|
|
"GUILD_ROLE_CREATE": GuildRoleCreate{},
|
|
"GUILD_ROLE_UPDATE": GuildRoleUpdate{},
|
|
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
|
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
|
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
|
"MESSAGE_ACK": MessageAck{},
|
|
"MESSAGE_CREATE": MessageCreate{},
|
|
"MESSAGE_UPDATE": MessageUpdate{},
|
|
"MESSAGE_DELETE": MessageDelete{},
|
|
"PRESENCE_UPDATE": PresenceUpdate{},
|
|
"READY": Ready{},
|
|
"USER_UPDATE": UserUpdate{},
|
|
"USER_SETTINGS_UPDATE": UserSettingsUpdate{},
|
|
"TYPING_START": TypingStart{},
|
|
"VOICE_SERVER_UPDATE": VoiceServerUpdate{},
|
|
"VOICE_STATE_UPDATE": VoiceStateUpdate{},
|
|
}
|
|
|
|
// Connect is an empty struct for an event.
|
|
type Connect struct{}
|
|
|
|
// Disconnect is an empty struct for an event.
|
|
type Disconnect struct{}
|
|
|
|
// MessageCreate is a wrapper struct for an event.
|
|
type MessageCreate struct {
|
|
*Message
|
|
}
|
|
|
|
// MessageUpdate is a wrapper struct for an event.
|
|
type MessageUpdate struct {
|
|
*Message
|
|
}
|
|
|
|
// MessageDelete is a wrapper struct for an event.
|
|
type MessageDelete struct {
|
|
*Message
|
|
}
|
|
|
|
// ChannelCreate is a wrapper struct for an event.
|
|
type ChannelCreate struct {
|
|
*Channel
|
|
}
|
|
|
|
// ChannelUpdate is a wrapper struct for an event.
|
|
type ChannelUpdate struct {
|
|
*Channel
|
|
}
|
|
|
|
// ChannelDelete is a wrapper struct for an event.
|
|
type ChannelDelete struct {
|
|
*Channel
|
|
}
|
|
|
|
// GuildCreate is a wrapper struct for an event.
|
|
type GuildCreate struct {
|
|
*Guild
|
|
}
|
|
|
|
// GuildUpdate is a wrapper struct for an event.
|
|
type GuildUpdate struct {
|
|
*Guild
|
|
}
|
|
|
|
// GuildDelete is a wrapper struct for an event.
|
|
type GuildDelete struct {
|
|
*Guild
|
|
}
|
|
|
|
// GuildBanAdd is a wrapper struct for an event.
|
|
type GuildBanAdd struct {
|
|
*GuildBan
|
|
}
|
|
|
|
// GuildBanRemove is a wrapper struct for an event.
|
|
type GuildBanRemove struct {
|
|
*GuildBan
|
|
}
|
|
|
|
// GuildMemberAdd is a wrapper struct for an event.
|
|
type GuildMemberAdd struct {
|
|
*Member
|
|
}
|
|
|
|
// GuildMemberUpdate is a wrapper struct for an event.
|
|
type GuildMemberUpdate struct {
|
|
*Member
|
|
}
|
|
|
|
// GuildMemberRemove is a wrapper struct for an event.
|
|
type GuildMemberRemove struct {
|
|
*Member
|
|
}
|
|
|
|
// GuildRoleCreate is a wrapper struct for an event.
|
|
type GuildRoleCreate struct {
|
|
*GuildRole
|
|
}
|
|
|
|
// GuildRoleUpdate is a wrapper struct for an event.
|
|
type GuildRoleUpdate struct {
|
|
*GuildRole
|
|
}
|
|
|
|
// VoiceStateUpdate is a wrapper struct for an event.
|
|
type VoiceStateUpdate struct {
|
|
*VoiceState
|
|
}
|
|
|
|
// UserUpdate is a wrapper struct for an event.
|
|
type UserUpdate struct {
|
|
*UserUpdate
|
|
}
|
|
|
|
// UserSettingsUpdate is a map for an event.
|
|
type UserSettingsUpdate map[string]interface{}
|