@@ -17,6 +17,8 @@ namespace Discord | |||||
Task<IChannel> GetChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload); | Task<IChannel> GetChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload); | ||||
Task<IReadOnlyCollection<IPrivateChannel>> GetPrivateChannelsAsync(CacheMode mode = CacheMode.AllowDownload); | Task<IReadOnlyCollection<IPrivateChannel>> GetPrivateChannelsAsync(CacheMode mode = CacheMode.AllowDownload); | ||||
Task<IReadOnlyCollection<IDMChannel>> GetDMChannelsAsync(CacheMode mode = CacheMode.AllowDownload); | |||||
Task<IReadOnlyCollection<IGroupChannel>> GetGroupChannelsAsync(CacheMode mode = CacheMode.AllowDownload); | |||||
Task<IReadOnlyCollection<IConnection>> GetConnectionsAsync(); | Task<IReadOnlyCollection<IConnection>> GetConnectionsAsync(); | ||||
@@ -134,6 +134,10 @@ namespace Discord.Rest | |||||
=> Task.FromResult<IChannel>(null); | => Task.FromResult<IChannel>(null); | ||||
Task<IReadOnlyCollection<IPrivateChannel>> IDiscordClient.GetPrivateChannelsAsync(CacheMode mode) | Task<IReadOnlyCollection<IPrivateChannel>> IDiscordClient.GetPrivateChannelsAsync(CacheMode mode) | ||||
=> Task.FromResult<IReadOnlyCollection<IPrivateChannel>>(ImmutableArray.Create<IPrivateChannel>()); | => Task.FromResult<IReadOnlyCollection<IPrivateChannel>>(ImmutableArray.Create<IPrivateChannel>()); | ||||
Task<IReadOnlyCollection<IDMChannel>> IDiscordClient.GetDMChannelsAsync(CacheMode mode) | |||||
=> Task.FromResult<IReadOnlyCollection<IDMChannel>>(ImmutableArray.Create<IDMChannel>()); | |||||
Task<IReadOnlyCollection<IGroupChannel>> IDiscordClient.GetGroupChannelsAsync(CacheMode mode) | |||||
=> Task.FromResult<IReadOnlyCollection<IGroupChannel>>(ImmutableArray.Create<IGroupChannel>()); | |||||
Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | ||||
=> Task.FromResult<IReadOnlyCollection<IConnection>>(ImmutableArray.Create<IConnection>()); | => Task.FromResult<IReadOnlyCollection<IConnection>>(ImmutableArray.Create<IConnection>()); | ||||
@@ -24,10 +24,24 @@ namespace Discord.Rest | |||||
return RestChannel.Create(client, model); | return RestChannel.Create(client, model); | ||||
return null; | return null; | ||||
} | } | ||||
public static async Task<IReadOnlyCollection<IPrivateChannel>> GetPrivateChannelsAsync(BaseDiscordClient client) | |||||
public static async Task<IReadOnlyCollection<IRestPrivateChannel>> GetPrivateChannelsAsync(BaseDiscordClient client) | |||||
{ | { | ||||
var models = await client.ApiClient.GetMyPrivateChannelsAsync().ConfigureAwait(false); | var models = await client.ApiClient.GetMyPrivateChannelsAsync().ConfigureAwait(false); | ||||
return models.Select(x => RestDMChannel.Create(client, x)).ToImmutableArray(); | |||||
return models.Select(x => RestChannel.CreatePrivate(client, x)).ToImmutableArray(); | |||||
} | |||||
public static async Task<IReadOnlyCollection<RestDMChannel>> GetDMChannelsAsync(BaseDiscordClient client) | |||||
{ | |||||
var models = await client.ApiClient.GetMyPrivateChannelsAsync().ConfigureAwait(false); | |||||
return models | |||||
.Where(x => x.Type == ChannelType.DM) | |||||
.Select(x => RestDMChannel.Create(client, x)).ToImmutableArray(); | |||||
} | |||||
public static async Task<IReadOnlyCollection<RestGroupChannel>> GetGroupChannelsAsync(BaseDiscordClient client) | |||||
{ | |||||
var models = await client.ApiClient.GetMyPrivateChannelsAsync().ConfigureAwait(false); | |||||
return models | |||||
.Where(x => x.Type == ChannelType.Group) | |||||
.Select(x => RestGroupChannel.Create(client, x)).ToImmutableArray(); | |||||
} | } | ||||
public static async Task<IReadOnlyCollection<RestConnection>> GetConnectionsAsync(BaseDiscordClient client) | public static async Task<IReadOnlyCollection<RestConnection>> GetConnectionsAsync(BaseDiscordClient client) | ||||
@@ -39,8 +39,12 @@ namespace Discord.Rest | |||||
public Task<RestChannel> GetChannelAsync(ulong id) | public Task<RestChannel> GetChannelAsync(ulong id) | ||||
=> ClientHelper.GetChannelAsync(this, id); | => ClientHelper.GetChannelAsync(this, id); | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public Task<IReadOnlyCollection<IPrivateChannel>> GetPrivateChannelsAsync() | |||||
public Task<IReadOnlyCollection<IRestPrivateChannel>> GetPrivateChannelsAsync() | |||||
=> ClientHelper.GetPrivateChannelsAsync(this); | => ClientHelper.GetPrivateChannelsAsync(this); | ||||
public Task<IReadOnlyCollection<RestDMChannel>> GetDMChannelsAsync() | |||||
=> ClientHelper.GetDMChannelsAsync(this); | |||||
public Task<IReadOnlyCollection<RestGroupChannel>> GetGroupChannelsAsync() | |||||
=> ClientHelper.GetGroupChannelsAsync(this); | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public Task<IReadOnlyCollection<RestConnection>> GetConnectionsAsync() | public Task<IReadOnlyCollection<RestConnection>> GetConnectionsAsync() | ||||
@@ -98,6 +102,20 @@ namespace Discord.Rest | |||||
else | else | ||||
return ImmutableArray.Create<IPrivateChannel>(); | return ImmutableArray.Create<IPrivateChannel>(); | ||||
} | } | ||||
async Task<IReadOnlyCollection<IDMChannel>> IDiscordClient.GetDMChannelsAsync(CacheMode mode) | |||||
{ | |||||
if (mode == CacheMode.AllowDownload) | |||||
return await GetDMChannelsAsync().ConfigureAwait(false); | |||||
else | |||||
return ImmutableArray.Create<IDMChannel>(); | |||||
} | |||||
async Task<IReadOnlyCollection<IGroupChannel>> IDiscordClient.GetGroupChannelsAsync(CacheMode mode) | |||||
{ | |||||
if (mode == CacheMode.AllowDownload) | |||||
return await GetGroupChannelsAsync().ConfigureAwait(false); | |||||
else | |||||
return ImmutableArray.Create<IGroupChannel>(); | |||||
} | |||||
async Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | async Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | ||||
=> await GetConnectionsAsync().ConfigureAwait(false); | => await GetConnectionsAsync().ConfigureAwait(false); | ||||
@@ -68,6 +68,10 @@ namespace Discord.WebSocket | |||||
public new SocketSelfUser CurrentUser { get { return base.CurrentUser as SocketSelfUser; } private set { base.CurrentUser = value; } } | public new SocketSelfUser CurrentUser { get { return base.CurrentUser as SocketSelfUser; } private set { base.CurrentUser = value; } } | ||||
public IReadOnlyCollection<SocketGuild> Guilds => State.Guilds; | public IReadOnlyCollection<SocketGuild> Guilds => State.Guilds; | ||||
public IReadOnlyCollection<ISocketPrivateChannel> PrivateChannels => State.PrivateChannels; | public IReadOnlyCollection<ISocketPrivateChannel> PrivateChannels => State.PrivateChannels; | ||||
public IReadOnlyCollection<SocketDMChannel> DMChannels | |||||
=> State.PrivateChannels.Select(x => x as SocketDMChannel).Where(x => x != null).ToImmutableArray(); | |||||
public IReadOnlyCollection<SocketGroupChannel> GroupChannels | |||||
=> State.PrivateChannels.Select(x => x as SocketGroupChannel).Where(x => x != null).ToImmutableArray(); | |||||
public IReadOnlyCollection<RestVoiceRegion> VoiceRegions => _voiceRegions.ToReadOnlyCollection(); | public IReadOnlyCollection<RestVoiceRegion> VoiceRegions => _voiceRegions.ToReadOnlyCollection(); | ||||
/// <summary> Creates a new REST/WebSocket discord client. </summary> | /// <summary> Creates a new REST/WebSocket discord client. </summary> | ||||
@@ -1803,6 +1807,10 @@ namespace Discord.WebSocket | |||||
=> Task.FromResult<IChannel>(GetChannel(id)); | => Task.FromResult<IChannel>(GetChannel(id)); | ||||
Task<IReadOnlyCollection<IPrivateChannel>> IDiscordClient.GetPrivateChannelsAsync(CacheMode mode) | Task<IReadOnlyCollection<IPrivateChannel>> IDiscordClient.GetPrivateChannelsAsync(CacheMode mode) | ||||
=> Task.FromResult<IReadOnlyCollection<IPrivateChannel>>(PrivateChannels); | => Task.FromResult<IReadOnlyCollection<IPrivateChannel>>(PrivateChannels); | ||||
Task<IReadOnlyCollection<IDMChannel>> IDiscordClient.GetDMChannelsAsync(CacheMode mode) | |||||
=> Task.FromResult<IReadOnlyCollection<IDMChannel>>(DMChannels); | |||||
Task<IReadOnlyCollection<IGroupChannel>> IDiscordClient.GetGroupChannelsAsync(CacheMode mode) | |||||
=> Task.FromResult<IReadOnlyCollection<IGroupChannel>>(GroupChannels); | |||||
async Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | async Task<IReadOnlyCollection<IConnection>> IDiscordClient.GetConnectionsAsync() | ||||
=> await GetConnectionsAsync().ConfigureAwait(false); | => await GetConnectionsAsync().ConfigureAwait(false); | ||||