@@ -595,31 +595,15 @@ namespace Discord.API | |||||
return await SendAsync<ChannelThreads>("GET", () => $"guilds/{guildId}/threads/active", bucket, options: options); | return await SendAsync<ChannelThreads>("GET", () => $"guilds/{guildId}/threads/active", bucket, options: options); | ||||
} | } | ||||
public async Task<ChannelThreads> GetActiveThreadsInChannelAsync(ulong guildId, ulong parentChannel, RequestOptions options = null) | |||||
public async Task<ChannelThreads> GetActiveThreadsInChannelAsync(ulong channelId, RequestOptions options = null) | |||||
{ | { | ||||
Preconditions.NotEqual(guildId, 0, nameof(guildId)); | |||||
Preconditions.NotEqual(channelId, 0, nameof(channelId)); | |||||
options = RequestOptions.CreateOrClone(options); | options = RequestOptions.CreateOrClone(options); | ||||
var bucket = new BucketIds(guildId: guildId); | |||||
ChannelThreads allChannelThreads = await SendAsync<ChannelThreads>("GET", () => $"guilds/{guildId}/threads/active", bucket, options: options); | |||||
ChannelThreads filteredThreads = new ChannelThreads(); | |||||
filteredThreads.Threads = allChannelThreads.Threads.Where(x => x.CategoryId == parentChannel).ToArray(); | |||||
List<ThreadMember> members = new List<ThreadMember>(); | |||||
foreach (ThreadMember m in allChannelThreads.Members) | |||||
{ | |||||
if (filteredThreads.Threads.Where(x => x.Id == (ulong)m.Id).Count() == 0) | |||||
continue; | |||||
members.Add(m); | |||||
} | |||||
filteredThreads.Members = members.ToArray(); | |||||
var bucket = new BucketIds(channelId: channelId); | |||||
return filteredThreads; | |||||
return await SendAsync<ChannelThreads>("GET", () => $"channels/{channelId}/threads/active", bucket, options: options); | |||||
} | } | ||||
public async Task<ChannelThreads> GetPublicArchivedThreadsAsync(ulong channelId, DateTimeOffset? before = null, int? limit = null, RequestOptions options = null) | public async Task<ChannelThreads> GetPublicArchivedThreadsAsync(ulong channelId, DateTimeOffset? before = null, int? limit = null, RequestOptions options = null) | ||||
@@ -236,7 +236,7 @@ namespace Discord.Rest | |||||
/// <inheritdoc cref="IGuildChannel.GetActiveThreadsAsync(RequestOptions)"/> | /// <inheritdoc cref="IGuildChannel.GetActiveThreadsAsync(RequestOptions)"/> | ||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null) | public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null) | ||||
=> ThreadHelper.GetActiveThreadsInChannelAsync(Guild, this, Discord, options); | |||||
=> ThreadHelper.GetActiveThreadsInChannelAsync(this, Discord, options); | |||||
/// <inheritdoc cref="IGuildChannel.GetPublicArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/> | /// <inheritdoc cref="IGuildChannel.GetPublicArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/> | ||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null) | public Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null) | ||||
@@ -67,10 +67,10 @@ namespace Discord.Rest | |||||
var result = await client.ApiClient.GetActiveThreadsAsync(guild.Id, options).ConfigureAwait(false); | var result = await client.ApiClient.GetActiveThreadsAsync(guild.Id, options).ConfigureAwait(false); | ||||
return result.Threads.Select(x => RestThreadChannel.Create(client, guild, x)).ToImmutableArray(); | return result.Threads.Select(x => RestThreadChannel.Create(client, guild, x)).ToImmutableArray(); | ||||
} | } | ||||
public static async Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsInChannelAsync(IGuild guild, IGuildChannel parentChannel, BaseDiscordClient client, RequestOptions options) | |||||
public static async Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsInChannelAsync(IGuildChannel channel, BaseDiscordClient client, RequestOptions options) | |||||
{ | { | ||||
var result = await client.ApiClient.GetActiveThreadsInChannelAsync(guild.Id, parentChannel.Id, options).ConfigureAwait(false); | |||||
return result.Threads.Select(x => RestThreadChannel.Create(client, guild, x)).ToImmutableArray(); | |||||
var result = await client.ApiClient.GetActiveThreadsInChannelAsync(channel.Id, options).ConfigureAwait(false); | |||||
return result.Threads.Select(x => RestThreadChannel.Create(client, channel.Guild, x)).ToImmutableArray(); | |||||
} | } | ||||
public static async Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(IGuildChannel channel, BaseDiscordClient client, int? limit = null, | public static async Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(IGuildChannel channel, BaseDiscordClient client, int? limit = null, | ||||
@@ -179,7 +179,7 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc cref="IGuildChannel.GetActiveThreadsAsync(RequestOptions)"/> | /// <inheritdoc cref="IGuildChannel.GetActiveThreadsAsync(RequestOptions)"/> | ||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null) | public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null) | ||||
=> ThreadHelper.GetActiveThreadsInChannelAsync(Guild, this, Discord, options); | |||||
=> ThreadHelper.GetActiveThreadsInChannelAsync(this, Discord, options); | |||||
/// <inheritdoc cref="IGuildChannel.GetPublicArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/> | /// <inheritdoc cref="IGuildChannel.GetPublicArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/> | ||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null) | public Task<IReadOnlyCollection<RestThreadChannel>> GetPublicArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null) | ||||