From 315ae4523181e6d03eadc84f6f13018efdf142de Mon Sep 17 00:00:00 2001 From: Chris Rhodes Date: Tue, 29 Nov 2016 20:23:10 -0800 Subject: [PATCH] Set GuildID on all members in discordgo land not in state. --- discord.go | 23 +++++++++++++++++++++++ state.go | 19 ------------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/discord.go b/discord.go index a42c77c..4730376 100644 --- a/discord.go +++ b/discord.go @@ -239,11 +239,34 @@ func (s *Session) initialize() { s.handlers = map[interface{}][]reflect.Value{} } +// setGuildIds will set the GuildID on all the members of a guild. +// This is done as event data does not have it set. +func setGuildIds(g *Guild) { + for _, c := range g.Channels { + c.GuildID = g.ID + } + + for _, m := range g.Members { + m.GuildID = g.ID + } + + for _, vs := range g.VoiceStates { + vs.GuildID = g.ID + } +} + // onInterface handles all internal events and routes them to the appropriate internal handler. func (s *Session) onInterface(i interface{}) { switch t := i.(type) { case *Ready: + for _, g := range t.Guilds { + setGuildIds(g) + } s.onReady(t) + case *GuildCreate: + setGuildIds(t.Guild) + case *GuildUpdate: + setGuildIds(t.Guild) case *Resumed: s.onResumed(t) case *VoiceServerUpdate: diff --git a/state.go b/state.go index 201820e..ee82f13 100644 --- a/state.go +++ b/state.go @@ -67,7 +67,6 @@ func (s *State) GuildAdd(guild *Guild) error { // Update the channels to point to the right guild, adding them to the channelMap as we go for _, c := range guild.Channels { - c.GuildID = guild.ID s.channelMap[c.ID] = c } @@ -81,24 +80,15 @@ func (s *State) GuildAdd(guild *Guild) error { guild.Emojis = g.Emojis } if guild.Members == nil { - for _, m := range g.Members { - m.GuildID = guild.ID - } guild.Members = g.Members } if guild.Presences == nil { guild.Presences = g.Presences } if guild.Channels == nil { - for _, c := range g.Channels { - c.GuildID = guild.ID - } guild.Channels = g.Channels } if guild.VoiceStates == nil { - for _, g := range g.VoiceStates { - g.GuildID = guild.ID - } guild.VoiceStates = g.VoiceStates } *g = *guild @@ -631,17 +621,8 @@ func (s *State) onReady(se *Session, r *Ready) (err error) { s.guildMap[g.ID] = g for _, c := range g.Channels { - c.GuildID = g.ID s.channelMap[c.ID] = c } - - for _, m := range g.Members { - m.GuildID = g.ID - } - - for _, vs := range g.VoiceStates { - vs.GuildID = g.ID - } } for _, c := range s.PrivateChannels {