Set GuildID on all members in discordgo land not in state.

This commit is contained in:
Chris Rhodes 2016-11-29 20:23:10 -08:00
parent d726f93375
commit 315ae45231
2 changed files with 23 additions and 19 deletions

View file

@ -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:

View file

@ -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 {