forked from pothtonswer/discordmuffin
Fix lazy-loading of guilds not working
We're moving to lazy-loading guilds, meaning bots now recieve a READY packet with guilds that only have 'id' and 'unavailable' fields. Post READY, the client then lazyily recieves GUILD_CREATE's for the rest of the guilds it's in. Previously we assumed the first instance of the guild we got (from ready) had all the required information, now we need to use the GUILD_CREATE if the guild was marked as unavailable.
This commit is contained in:
parent
4c9d6e78b1
commit
019d0fe9af
2 changed files with 16 additions and 13 deletions
14
state.go
14
state.go
|
@ -57,24 +57,26 @@ func (s *State) GuildAdd(guild *Guild) error {
|
|||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
// Otherwise, update the channels to point to the right guild
|
||||
for _, c := range guild.Channels {
|
||||
c.GuildID = guild.ID
|
||||
}
|
||||
|
||||
// If the guild exists, replace it.
|
||||
for i, g := range s.Guilds {
|
||||
if g.ID == guild.ID {
|
||||
// Don't stomp on properties that don't come in updates.
|
||||
// If this guild already exists with data, don't stomp on props
|
||||
if !g.Unavailable {
|
||||
guild.Members = g.Members
|
||||
guild.Presences = g.Presences
|
||||
guild.Channels = g.Channels
|
||||
guild.VoiceStates = g.VoiceStates
|
||||
}
|
||||
s.Guilds[i] = guild
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, update the channels to point to the right guild
|
||||
for _, c := range guild.Channels {
|
||||
c.GuildID = guild.ID
|
||||
}
|
||||
|
||||
s.Guilds = append(s.Guilds, guild)
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -178,6 +178,7 @@ type Guild struct {
|
|||
Presences []*Presence `json:"presences"`
|
||||
Channels []*Channel `json:"channels"`
|
||||
VoiceStates []*VoiceState `json:"voice_states"`
|
||||
Unavailable bool `json:"unavailable"`
|
||||
}
|
||||
|
||||
// A GuildParams stores all the data needed to update discord guild settings
|
||||
|
|
Loading…
Reference in a new issue