diff --git a/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs b/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs new file mode 100644 index 000000000..bf5a636a8 --- /dev/null +++ b/src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Discord.WebSocket.Extensions +{ + // TODO: Docstrings + public static class GuildExtensions + { + // Channels + + public static IGuildChannel GetChannel(this IGuild guild, ulong id) => + (guild as SocketGuild).GetChannel(id); + + public static ITextChannel GetTextChannel(this IGuild guild, ulong id) => + (guild as SocketGuild).GetChannel(id) as ITextChannel; + + public static IEnumerable GetTextChannels(this IGuild guild) => + (guild as SocketGuild).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; + + public static IEnumerable GetVoiceChannels(this IGuild guild) => + (guild as SocketGuild).Channels.Select(c => c as IVoiceChannel).Where(c => c != null); + + // Users + + public static IGuildUser GetCurrentUser(this IGuild guild) => + (guild as SocketGuild).CurrentUser; + + public static IGuildUser GetUser(this IGuild guild, ulong id) => + (guild as SocketGuild).GetUser(id); + + public static IEnumerable GetUsers(this IGuild guild) => + (guild as SocketGuild).Members; + + public static int GetUserCount(this IGuild guild) => + (guild as SocketGuild).MemberCount; + + public static int GetCachedUserCount(this IGuild guild) => + (guild as SocketGuild).DownloadedMemberCount; + } +}