Procházet zdrojové kódy

Merge pull request #161 from b1naryth1ef/bugfix/lazy-guild-loading

Support guild lazy loading.
Bruce před 8 roky
rodič
revize
6101abeb27
2 změnil soubory, kde provedl 13 přidání a 10 odebrání
  1. 12 10
      state.go
  2. 1 0
      structs.go

+ 12 - 10
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.
-			guild.Members = g.Members
-			guild.Presences = g.Presences
-			guild.Channels = g.Channels
-			guild.VoiceStates = g.VoiceStates
+			// 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
 }

+ 1 - 0
structs.go

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