Set GuildID on all members in discordgo land not in state.
This commit is contained in:
parent
d726f93375
commit
315ae45231
2 changed files with 23 additions and 19 deletions
23
discord.go
23
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:
|
||||
|
|
19
state.go
19
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 {
|
||||
|
|
Loading…
Reference in a new issue