Browse Source

FIX: fetching all registered channels will search state cache for categories

Drn 2 years ago
parent
commit
897a377782
1 changed files with 26 additions and 8 deletions
  1. 26 8
      config.go

+ 26 - 8
config.go

@@ -1381,14 +1381,6 @@ func getAllRegisteredChannels() []string {
 			}
 		}
 	} else { // STANDARD MODE
-		// Compile all config channels
-		for _, channel := range config.Channels {
-			if channel.ChannelIDs != nil {
-				channels = append(channels, *channel.ChannelIDs...)
-			} else if isNumeric(channel.ChannelID) {
-				channels = append(channels, channel.ChannelID)
-			}
-		}
 		// Compile all channels sourced from config servers
 		for _, server := range config.Servers {
 			if server.ServerIDs != nil {
@@ -1413,6 +1405,32 @@ func getAllRegisteredChannels() []string {
 				}
 			}
 		}
+		// Compile all config channels under categories, no practical way to poll these other than checking state.
+		for _, guild := range bot.State.Guilds {
+			for _, channel := range guild.Channels {
+				for _, source := range config.Categories {
+					if source.CategoryIDs != nil {
+						for _, category := range *source.CategoryIDs {
+							if channel.ParentID == category {
+								channels = append(channels, channel.ID)
+							}
+						}
+					} else if isNumeric(source.CategoryID) {
+						if channel.ParentID == source.CategoryID {
+							channels = append(channels, channel.ID)
+						}
+					}
+				}
+			}
+		}
+		// Compile all config channels
+		for _, channel := range config.Channels {
+			if channel.ChannelIDs != nil {
+				channels = append(channels, *channel.ChannelIDs...)
+			} else if isNumeric(channel.ChannelID) {
+				channels = append(channels, channel.ChannelID)
+			}
+		}
 	}
 	return channels
 }