| @@ -14,7 +14,7 @@ namespace Discord.WebSocket | |||||
| [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | ||||
| public class Guild : IGuild, IUserGuild | public class Guild : IGuild, IUserGuild | ||||
| { | { | ||||
| private ConcurrentDictionary<ulong, GuildChannel> _channels; | |||||
| private ConcurrentHashSet<ulong> _channels; | |||||
| private ConcurrentDictionary<ulong, GuildUser> _members; | private ConcurrentDictionary<ulong, GuildUser> _members; | ||||
| private ConcurrentDictionary<ulong, Role> _roles; | private ConcurrentDictionary<ulong, Role> _roles; | ||||
| private ulong _ownerId; | private ulong _ownerId; | ||||
| @@ -71,11 +71,11 @@ namespace Discord.WebSocket | |||||
| /// <summary> Gets the embed channel for this guild. </summary> | /// <summary> Gets the embed channel for this guild. </summary> | ||||
| public IChannel EmbedChannel => GetChannel(_embedChannelId.GetValueOrDefault(0)); //TODO: Is this text or voice? | public IChannel EmbedChannel => GetChannel(_embedChannelId.GetValueOrDefault(0)); //TODO: Is this text or voice? | ||||
| /// <summary> Gets a collection of all channels in this guild. </summary> | /// <summary> Gets a collection of all channels in this guild. </summary> | ||||
| public IEnumerable<GuildChannel> Channels => _channels.Select(x => x.Value); | |||||
| public IEnumerable<GuildChannel> Channels => _channels.Select(x => Discord.GetChannel(x) as GuildChannel); | |||||
| /// <summary> Gets a collection of text channels in this guild. </summary> | /// <summary> Gets a collection of text channels in this guild. </summary> | ||||
| public IEnumerable<TextChannel> TextChannels => _channels.Select(x => x.Value).OfType<TextChannel>(); | |||||
| public IEnumerable<TextChannel> TextChannels => _channels.Select(x => Discord.GetChannel(x) as TextChannel); | |||||
| /// <summary> Gets a collection of voice channels in this guild. </summary> | /// <summary> Gets a collection of voice channels in this guild. </summary> | ||||
| public IEnumerable<VoiceChannel> VoiceChannels => _channels.Select(x => x.Value).OfType<VoiceChannel>(); | |||||
| public IEnumerable<VoiceChannel> VoiceChannels => _channels.Select(x => Discord.GetChannel(x) as VoiceChannel); | |||||
| /// <summary> Gets a collection of all roles in this guild. </summary> | /// <summary> Gets a collection of all roles in this guild. </summary> | ||||
| public IEnumerable<Role> Roles => _roles?.Select(x => x.Value) ?? Enumerable.Empty<Role>(); | public IEnumerable<Role> Roles => _roles?.Select(x => x.Value) ?? Enumerable.Empty<Role>(); | ||||
| /// <summary> Gets a collection of all users in this guild. </summary> | /// <summary> Gets a collection of all users in this guild. </summary> | ||||
| @@ -185,9 +185,8 @@ namespace Discord.WebSocket | |||||
| /// <summary> Gets the channel in this guild with the provided id, or null if not found. </summary> | /// <summary> Gets the channel in this guild with the provided id, or null if not found. </summary> | ||||
| public GuildChannel GetChannel(ulong id) | public GuildChannel GetChannel(ulong id) | ||||
| { | { | ||||
| GuildChannel channel; | |||||
| if (_channels.TryGetValue(id, out channel)) | |||||
| return channel; | |||||
| if (_channels.ContainsKey(id)) | |||||
| return Discord.GetChannel(id) as GuildChannel; | |||||
| return null; | return null; | ||||
| } | } | ||||
| /// <summary> Creates a new text channel. </summary> | /// <summary> Creates a new text channel. </summary> | ||||