|
@@ -98,16 +98,27 @@ func (s *State) GuildAdd(guild *Guild) error {
|
|
s.channelMap[c.ID] = c
|
|
s.channelMap[c.ID] = c
|
|
}
|
|
}
|
|
|
|
|
|
- // If the guild exists, replace it.
|
|
|
|
if g, ok := s.guildMap[guild.ID]; ok {
|
|
if g, ok := s.guildMap[guild.ID]; ok {
|
|
- // If this guild already exists with data, don't stomp on props.
|
|
|
|
- if g.Unavailable != nil && !*g.Unavailable {
|
|
|
|
|
|
+ // We are about to replace `g` in the state with `guild`, but first we need to
|
|
|
|
+ // make sure we preserve any fields that the `guild` doesn't contain from `g`.
|
|
|
|
+ if guild.Roles == nil {
|
|
|
|
+ guild.Roles = g.Roles
|
|
|
|
+ }
|
|
|
|
+ if guild.Emojis == nil {
|
|
|
|
+ guild.Emojis = g.Emojis
|
|
|
|
+ }
|
|
|
|
+ if guild.Members == nil {
|
|
guild.Members = g.Members
|
|
guild.Members = g.Members
|
|
|
|
+ }
|
|
|
|
+ if guild.Presences == nil {
|
|
guild.Presences = g.Presences
|
|
guild.Presences = g.Presences
|
|
|
|
+ }
|
|
|
|
+ if guild.Channels == nil {
|
|
guild.Channels = g.Channels
|
|
guild.Channels = g.Channels
|
|
|
|
+ }
|
|
|
|
+ if guild.VoiceStates == nil {
|
|
guild.VoiceStates = g.VoiceStates
|
|
guild.VoiceStates = g.VoiceStates
|
|
}
|
|
}
|
|
-
|
|
|
|
*g = *guild
|
|
*g = *guild
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|