diff --git a/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs b/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs index bf5a636a8..d2e8e1482 100644 --- a/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs +++ b/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; namespace Discord.WebSocket.Extensions @@ -9,36 +10,44 @@ namespace Discord.WebSocket.Extensions // Channels public static IGuildChannel GetChannel(this IGuild guild, ulong id) => - (guild as SocketGuild).GetChannel(id); + GetSocketGuild(guild).GetChannel(id); public static ITextChannel GetTextChannel(this IGuild guild, ulong id) => - (guild as SocketGuild).GetChannel(id) as ITextChannel; + GetSocketGuild(guild).GetChannel(id) as ITextChannel; public static IEnumerable GetTextChannels(this IGuild guild) => - (guild as SocketGuild).Channels.Select(c => c as ITextChannel).Where(c => c != null); + GetSocketGuild(guild).Channels.Select(c => c as ITextChannel).Where(c => c != null); public static IVoiceChannel GetVoiceChannel(this IGuild guild, ulong id) => - (guild as SocketGuild).GetChannel(id) as IVoiceChannel; + GetSocketGuild(guild).GetChannel(id) as IVoiceChannel; public static IEnumerable GetVoiceChannels(this IGuild guild) => - (guild as SocketGuild).Channels.Select(c => c as IVoiceChannel).Where(c => c != null); + GetSocketGuild(guild).Channels.Select(c => c as IVoiceChannel).Where(c => c != null); // Users public static IGuildUser GetCurrentUser(this IGuild guild) => - (guild as SocketGuild).CurrentUser; + GetSocketGuild(guild).CurrentUser; public static IGuildUser GetUser(this IGuild guild, ulong id) => - (guild as SocketGuild).GetUser(id); + GetSocketGuild(guild).GetUser(id); - public static IEnumerable GetUsers(this IGuild guild) => - (guild as SocketGuild).Members; + public static IReadOnlyCollection GetUsers(this IGuild guild) => + GetSocketGuild(guild).Members; public static int GetUserCount(this IGuild guild) => - (guild as SocketGuild).MemberCount; + GetSocketGuild(guild).MemberCount; public static int GetCachedUserCount(this IGuild guild) => - (guild as SocketGuild).DownloadedMemberCount; + GetSocketGuild(guild).DownloadedMemberCount; + + internal static SocketGuild GetSocketGuild(IGuild guild) + { + var socketGuild = guild as SocketGuild; + if (socketGuild == null) + throw new InvalidOperationException("This extension method is only valid on WebSocket Entities"); + return socketGuild; + } } }