From 326686d26a17d4fe8779cdcbce318a53bd921514 Mon Sep 17 00:00:00 2001 From: Christopher F Date: Fri, 29 Jul 2016 23:03:39 -0400 Subject: [PATCH] Add Extension Methods for WebSocket->IGuild For users importing `Discord.WebSocket.Extensions`, there are now non-async extensions for Get(Type)Channel(s) and Get(Current)User(s). These methods point to the appropriate method or member on SocketGuild. --- .../WebSocket/Extensions/GuildExtensions.cs | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs 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; + } +}