Merge pull request #162 from RogueException/issues/146
Added Extension Methods for WebSocket
This commit is contained in:
61
src/Discord.Net/WebSocket/Extensions/ChannelExtensions.cs
Normal file
61
src/Discord.Net/WebSocket/Extensions/ChannelExtensions.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Discord.WebSocket.Extensions
|
||||||
|
{
|
||||||
|
public static class ChannelExtensions
|
||||||
|
{
|
||||||
|
public static IUser GetUser(this IDMChannel channel, ulong id)
|
||||||
|
=> GetSocketDMChannel(channel).GetUser(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IUser> GetUsers(this IDMChannel channel)
|
||||||
|
=> GetSocketDMChannel(channel).Users;
|
||||||
|
|
||||||
|
public static IUser GetUser(this IGroupChannel channel, ulong id)
|
||||||
|
=> GetSocketGroupChannel(channel).GetUser(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IUser> GetUsers(this IGroupChannel channel)
|
||||||
|
=> GetSocketGroupChannel(channel).Users;
|
||||||
|
|
||||||
|
public static IGuildUser GetUser(this ITextChannel channel, ulong id)
|
||||||
|
=> GetSocketTextChannel(channel).GetUser(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IGuildUser> GetUsers(this ITextChannel channel)
|
||||||
|
=> GetSocketTextChannel(channel).Members;
|
||||||
|
|
||||||
|
public static IGuildUser GetUser(this IVoiceChannel channel, ulong id)
|
||||||
|
=> GetSocketVoiceChannel(channel).GetUser(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IGuildUser> GetUsers(this IVoiceChannel channel)
|
||||||
|
=> GetSocketVoiceChannel(channel).Members;
|
||||||
|
|
||||||
|
internal static SocketDMChannel GetSocketDMChannel(IDMChannel channel)
|
||||||
|
{
|
||||||
|
var socketChannel = channel as SocketDMChannel;
|
||||||
|
if (socketChannel == null)
|
||||||
|
throw new InvalidOperationException("This extension method is only valid on WebSocket Entities");
|
||||||
|
return socketChannel;
|
||||||
|
}
|
||||||
|
internal static SocketGroupChannel GetSocketGroupChannel(IGroupChannel channel)
|
||||||
|
{
|
||||||
|
var socketChannel = channel as SocketGroupChannel;
|
||||||
|
if (socketChannel == null)
|
||||||
|
throw new InvalidOperationException("This extension method is only valid on WebSocket Entities");
|
||||||
|
return socketChannel;
|
||||||
|
}
|
||||||
|
internal static SocketTextChannel GetSocketTextChannel(ITextChannel channel)
|
||||||
|
{
|
||||||
|
var socketChannel = channel as SocketTextChannel;
|
||||||
|
if (socketChannel == null)
|
||||||
|
throw new InvalidOperationException("This extension method is only valid on WebSocket Entities");
|
||||||
|
return socketChannel;
|
||||||
|
}
|
||||||
|
internal static SocketVoiceChannel GetSocketVoiceChannel(IVoiceChannel channel)
|
||||||
|
{
|
||||||
|
var socketChannel = channel as SocketVoiceChannel;
|
||||||
|
if (socketChannel == null)
|
||||||
|
throw new InvalidOperationException("This extension method is only valid on WebSocket Entities");
|
||||||
|
return socketChannel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
56
src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs
Normal file
56
src/Discord.Net/WebSocket/Extensions/GuildExtensions.cs
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
using System;
|
||||||
|
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) =>
|
||||||
|
GetSocketGuild(guild).GetChannel(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IGuildChannel> GetChannels(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).Channels;
|
||||||
|
|
||||||
|
public static ITextChannel GetTextChannel(this IGuild guild, ulong id) =>
|
||||||
|
GetSocketGuild(guild).GetChannel(id) as ITextChannel;
|
||||||
|
|
||||||
|
public static IEnumerable<ITextChannel> GetTextChannels(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).Channels.Select(c => c as ITextChannel).Where(c => c != null);
|
||||||
|
|
||||||
|
|
||||||
|
public static IVoiceChannel GetVoiceChannel(this IGuild guild, ulong id) =>
|
||||||
|
GetSocketGuild(guild).GetChannel(id) as IVoiceChannel;
|
||||||
|
|
||||||
|
public static IEnumerable<IVoiceChannel> GetVoiceChannels(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).Channels.Select(c => c as IVoiceChannel).Where(c => c != null);
|
||||||
|
|
||||||
|
// Users
|
||||||
|
|
||||||
|
public static IGuildUser GetCurrentUser(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).CurrentUser;
|
||||||
|
|
||||||
|
public static IGuildUser GetUser(this IGuild guild, ulong id) =>
|
||||||
|
GetSocketGuild(guild).GetUser(id);
|
||||||
|
|
||||||
|
public static IReadOnlyCollection<IGuildUser> GetUsers(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).Members;
|
||||||
|
|
||||||
|
public static int GetUserCount(this IGuild guild) =>
|
||||||
|
GetSocketGuild(guild).MemberCount;
|
||||||
|
|
||||||
|
public static int GetCachedUserCount(this IGuild guild) =>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user