Merge branch 'develop' of https://github.com/bwmarrin/Discordgo into develop
This commit is contained in:
commit
73c0b90f16
3 changed files with 62 additions and 46 deletions
60
events.go
60
events.go
|
@ -13,33 +13,34 @@ package discordgo
|
||||||
// Session.AddHandler(func(s *discordgo.Session, m *discordgo.PresenceUpdate) {
|
// Session.AddHandler(func(s *discordgo.Session, m *discordgo.PresenceUpdate) {
|
||||||
// })
|
// })
|
||||||
var eventToInterface = map[string]interface{}{
|
var eventToInterface = map[string]interface{}{
|
||||||
"CHANNEL_CREATE": ChannelCreate{},
|
"CHANNEL_CREATE": ChannelCreate{},
|
||||||
"CHANNEL_UPDATE": ChannelUpdate{},
|
"CHANNEL_UPDATE": ChannelUpdate{},
|
||||||
"CHANNEL_DELETE": ChannelDelete{},
|
"CHANNEL_DELETE": ChannelDelete{},
|
||||||
"GUILD_CREATE": GuildCreate{},
|
"GUILD_CREATE": GuildCreate{},
|
||||||
"GUILD_UPDATE": GuildUpdate{},
|
"GUILD_UPDATE": GuildUpdate{},
|
||||||
"GUILD_DELETE": GuildDelete{},
|
"GUILD_DELETE": GuildDelete{},
|
||||||
"GUILD_BAN_ADD": GuildBanAdd{},
|
"GUILD_BAN_ADD": GuildBanAdd{},
|
||||||
"GUILD_BAN_REMOVE": GuildBanRemove{},
|
"GUILD_BAN_REMOVE": GuildBanRemove{},
|
||||||
"GUILD_MEMBER_ADD": GuildMemberAdd{},
|
"GUILD_MEMBER_ADD": GuildMemberAdd{},
|
||||||
"GUILD_MEMBER_UPDATE": GuildMemberUpdate{},
|
"GUILD_MEMBER_UPDATE": GuildMemberUpdate{},
|
||||||
"GUILD_MEMBER_REMOVE": GuildMemberRemove{},
|
"GUILD_MEMBER_REMOVE": GuildMemberRemove{},
|
||||||
"GUILD_ROLE_CREATE": GuildRoleCreate{},
|
"GUILD_ROLE_CREATE": GuildRoleCreate{},
|
||||||
"GUILD_ROLE_UPDATE": GuildRoleUpdate{},
|
"GUILD_ROLE_UPDATE": GuildRoleUpdate{},
|
||||||
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
"GUILD_ROLE_DELETE": GuildRoleDelete{},
|
||||||
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
"GUILD_INTEGRATIONS_UPDATE": GuildIntegrationsUpdate{},
|
||||||
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
"GUILD_EMOJIS_UPDATE": GuildEmojisUpdate{},
|
||||||
"MESSAGE_ACK": MessageAck{},
|
"MESSAGE_ACK": MessageAck{},
|
||||||
"MESSAGE_CREATE": MessageCreate{},
|
"MESSAGE_CREATE": MessageCreate{},
|
||||||
"MESSAGE_UPDATE": MessageUpdate{},
|
"MESSAGE_UPDATE": MessageUpdate{},
|
||||||
"MESSAGE_DELETE": MessageDelete{},
|
"MESSAGE_DELETE": MessageDelete{},
|
||||||
"PRESENCE_UPDATE": PresenceUpdate{},
|
"PRESENCE_UPDATE": PresenceUpdate{},
|
||||||
"READY": Ready{},
|
"READY": Ready{},
|
||||||
"USER_UPDATE": UserUpdate{},
|
"USER_UPDATE": UserUpdate{},
|
||||||
"USER_SETTINGS_UPDATE": UserSettingsUpdate{},
|
"USER_SETTINGS_UPDATE": UserSettingsUpdate{},
|
||||||
"TYPING_START": TypingStart{},
|
"USER_GUILD_SETTINGS_UPDATE": UserGuildSettingsUpdate{},
|
||||||
"VOICE_SERVER_UPDATE": VoiceServerUpdate{},
|
"TYPING_START": TypingStart{},
|
||||||
"VOICE_STATE_UPDATE": VoiceStateUpdate{},
|
"VOICE_SERVER_UPDATE": VoiceServerUpdate{},
|
||||||
|
"VOICE_STATE_UPDATE": VoiceStateUpdate{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connect is an empty struct for an event.
|
// Connect is an empty struct for an event.
|
||||||
|
@ -140,3 +141,8 @@ type UserUpdate struct {
|
||||||
|
|
||||||
// UserSettingsUpdate is a map for an event.
|
// UserSettingsUpdate is a map for an event.
|
||||||
type UserSettingsUpdate map[string]interface{}
|
type UserSettingsUpdate map[string]interface{}
|
||||||
|
|
||||||
|
// UserGuildSettingsUpdate is a map for an event.
|
||||||
|
type UserGuildSettingsUpdate struct {
|
||||||
|
*UserGuildSettings
|
||||||
|
}
|
||||||
|
|
41
structs.go
41
structs.go
|
@ -215,24 +215,14 @@ type Member struct {
|
||||||
|
|
||||||
// A User stores all data for an individual Discord user.
|
// A User stores all data for an individual Discord user.
|
||||||
type User struct {
|
type User struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
Avatar string `json:"Avatar"`
|
Avatar string `json:"Avatar"`
|
||||||
Verified bool `json:"verified"`
|
Verified bool `json:"verified"`
|
||||||
//Discriminator int `json:"discriminator,string"` // TODO: See below
|
Discriminator string `json:"discriminator"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Research issue.
|
|
||||||
// Discriminator sometimes comes as a string
|
|
||||||
// and sometimes it comes as a int. Weird.
|
|
||||||
// to avoid errors I've just commented it out
|
|
||||||
// but it doesn't seem to just kill the whole
|
|
||||||
// program. Heartbeat is taken on READY even
|
|
||||||
// with error and the system continues to read
|
|
||||||
// it just doesn't seem able to handle this one
|
|
||||||
// field correctly. Need to research this more.
|
|
||||||
|
|
||||||
// A Settings stores data for a specific users Discord client settings.
|
// A Settings stores data for a specific users Discord client settings.
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
RenderEmbeds bool `json:"render_embeds"`
|
RenderEmbeds bool `json:"render_embeds"`
|
||||||
|
@ -274,7 +264,7 @@ type RateLimit struct {
|
||||||
|
|
||||||
// A ReadState stores data on the read state of channels.
|
// A ReadState stores data on the read state of channels.
|
||||||
type ReadState struct {
|
type ReadState struct {
|
||||||
MentionCount int
|
MentionCount int `json:"mention_count"`
|
||||||
LastMessageID string `json:"last_message_id"`
|
LastMessageID string `json:"last_message_id"`
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
}
|
}
|
||||||
|
@ -331,6 +321,23 @@ type GuildEmojisUpdate struct {
|
||||||
Emojis []*Emoji `json:"emojis"`
|
Emojis []*Emoji `json:"emojis"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A UserGuildSettingsChannelOverride stores data for a channel override for a users guild settings.
|
||||||
|
type UserGuildSettingsChannelOverride struct {
|
||||||
|
Muted bool `json:"muted"`
|
||||||
|
MessageNotifications int `json:"message_notifications"`
|
||||||
|
ChannelID string `json:"channel_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// A UserGuildSettings stores data for a users guild settings.
|
||||||
|
type UserGuildSettings struct {
|
||||||
|
SupressEveryone bool `json:"suppress_everyone"`
|
||||||
|
Muted bool `json:"muted"`
|
||||||
|
MobilePush bool `json:"mobile_push"`
|
||||||
|
MessageNotifications int `json:"message_notifications"`
|
||||||
|
GuildID string `json:"guild_id"`
|
||||||
|
ChannelOverrides []*UserGuildSettingsChannelOverride `json:"channel_overrides"`
|
||||||
|
}
|
||||||
|
|
||||||
// A State contains the current known state.
|
// A State contains the current known state.
|
||||||
// As discord sends this in a READY blob, it seems reasonable to simply
|
// As discord sends this in a READY blob, it seems reasonable to simply
|
||||||
// use that struct as the data store.
|
// use that struct as the data store.
|
||||||
|
|
7
wsapi.go
7
wsapi.go
|
@ -284,8 +284,11 @@ func (s *Session) event(messageType int, message []byte) {
|
||||||
// Attempt to unmarshal our event.
|
// Attempt to unmarshal our event.
|
||||||
// If there is an error we should handle the event itself.
|
// If there is an error we should handle the event itself.
|
||||||
if err = unmarshal(e.RawData, i); err != nil {
|
if err = unmarshal(e.RawData, i); err != nil {
|
||||||
fmt.Println("Unable to unmarshal event data.")
|
fmt.Println("Unable to unmarshal event data.", err)
|
||||||
i = e
|
// Ready events must fire, even if they are empty.
|
||||||
|
if e.Type != "READY" {
|
||||||
|
i = e
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("Unknown event.")
|
fmt.Println("Unknown event.")
|
||||||
|
|
Loading…
Reference in a new issue