diff --git a/gateway/events.go b/gateway/events.go index 3446321..7b98889 100644 --- a/gateway/events.go +++ b/gateway/events.go @@ -230,7 +230,9 @@ type ( // https://discordapp.com/developers/docs/topics/gateway#presence type ( // Clients may only update their game status 5 times per 20 seconds. - PresenceUpdateEvent discord.Presence + PresenceUpdateEvent struct { + discord.Presence + } PresencesReplaceEvent []discord.Presence // SessionsReplaceEvent is an undocumented user event. It's likely used for @@ -260,12 +262,16 @@ type ( Member *discord.Member `json:"member,omitempty"` } - UserUpdateEvent discord.User + UserUpdateEvent struct { + discord.User + } ) // https://discordapp.com/developers/docs/topics/gateway#voice type ( - VoiceStateUpdateEvent discord.VoiceState + VoiceStateUpdateEvent struct { + discord.VoiceState + } VoiceServerUpdateEvent struct { Token string `json:"token"` GuildID discord.Snowflake `json:"guild_id"` @@ -283,15 +289,23 @@ type ( // Undocumented type ( - UserGuildSettingsUpdateEvent UserGuildSettings - UserSettingsUpdateEvent UserSettings - UserNoteUpdateEvent struct { + UserGuildSettingsUpdateEvent struct { + UserGuildSettings + } + UserSettingsUpdateEvent struct { + UserSettings + } + UserNoteUpdateEvent struct { ID discord.Snowflake `json:"id"` Note string `json:"note"` } ) type ( - RelationshipAdd Relationship - RelationshipRemove Relationship + RelationshipAdd struct { + Relationship + } + RelationshipRemove struct { + Relationship + } ) diff --git a/state/state_events.go b/state/state_events.go index 739d3bd..e8dfe34 100644 --- a/state/state_events.go +++ b/state/state_events.go @@ -224,8 +224,7 @@ func (s *State) onEvent(iface interface{}) { }) case *gateway.PresenceUpdateEvent: - presence := (*discord.Presence)(ev) - if err := s.Store.PresenceSet(ev.GuildID, presence); err != nil { + if err := s.Store.PresenceSet(ev.GuildID, &ev.Presence); err != nil { s.stateErr(err, "Failed to update presence in state") } @@ -243,23 +242,23 @@ func (s *State) onEvent(iface interface{}) { case *gateway.UserGuildSettingsUpdateEvent: for i, ugs := range s.Ready.UserGuildSettings { if ugs.GuildID == ev.GuildID { - s.Ready.UserGuildSettings[i] = gateway.UserGuildSettings(*ev) + s.Ready.UserGuildSettings[i] = ev.UserGuildSettings } } case *gateway.UserSettingsUpdateEvent: - s.Ready.Settings = (*gateway.UserSettings)(ev) + s.Ready.Settings = &ev.UserSettings case *gateway.UserNoteUpdateEvent: s.Ready.Notes[ev.ID] = ev.Note case *gateway.UserUpdateEvent: - if err := s.Store.MyselfSet((*discord.User)(ev)); err != nil { + if err := s.Store.MyselfSet(&ev.User); err != nil { s.stateErr(err, "Failed to update myself from USER_UPDATE") } case *gateway.VoiceStateUpdateEvent: - vs := (*discord.VoiceState)(ev) + vs := &ev.VoiceState if vs.ChannelID == 0 { if err := s.Store.VoiceStateRemove(vs.GuildID, vs.UserID); err != nil { s.stateErr(err, "Failed to remove voice state from state")