Fix GetActiveThreadsAsync & add it to ITextChannel (#2526)
* fix `GetActiveThreadsAsync` being sadge * ah, forgot about mocked channel
This commit is contained in:
@@ -160,5 +160,15 @@ namespace Discord
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay,
|
Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay,
|
||||||
IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null);
|
IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a collection of active threads within this channel.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// A task that represents an asynchronous get operation for retrieving the threads. The task result contains
|
||||||
|
/// a collection of active threads.
|
||||||
|
/// </returns>
|
||||||
|
Task<IReadOnlyCollection<IThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,9 +134,9 @@ namespace Discord.Rest
|
|||||||
MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null, MessageFlags flags = MessageFlags.None, ForumTag[] tags = null)
|
MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null, MessageFlags flags = MessageFlags.None, ForumTag[] tags = null)
|
||||||
=> ThreadHelper.CreatePostAsync(this, Discord, title, attachments, archiveDuration, slowmode, text, embed, options, allowedMentions, components, stickers, embeds, flags, tags?.Select(tag => tag.Id).ToArray());
|
=> ThreadHelper.CreatePostAsync(this, Discord, title, attachments, archiveDuration, slowmode, text, embed, options, allowedMentions, components, stickers, embeds, flags, tags?.Select(tag => tag.Id).ToArray());
|
||||||
|
|
||||||
/// <inheritdoc cref="IForumChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
/// <inheritdoc cref="ITextChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
||||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
=> ThreadHelper.GetActiveThreadsAsync(Guild, Discord, options);
|
=> ThreadHelper.GetActiveThreadsAsync(Guild, Id, Discord, options);
|
||||||
|
|
||||||
/// <inheritdoc cref="IForumChannel.GetJoinedPrivateArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/>
|
/// <inheritdoc cref="IForumChannel.GetJoinedPrivateArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/>
|
||||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetJoinedPrivateArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null)
|
public Task<IReadOnlyCollection<RestThreadChannel>> GetJoinedPrivateArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null)
|
||||||
|
|||||||
@@ -288,6 +288,10 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task SyncPermissionsAsync(RequestOptions options = null)
|
public Task SyncPermissionsAsync(RequestOptions options = null)
|
||||||
=> ChannelHelper.SyncPermissionsAsync(this, Discord, options);
|
=> ChannelHelper.SyncPermissionsAsync(this, Discord, options);
|
||||||
|
|
||||||
|
/// <inheritdoc cref="ITextChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
||||||
|
public virtual Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> ThreadHelper.GetActiveThreadsAsync(Guild, Id, Discord, options);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Invites
|
#region Invites
|
||||||
@@ -321,6 +325,10 @@ namespace Discord.Rest
|
|||||||
|
|
||||||
async Task<IThreadChannel> ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options)
|
async Task<IThreadChannel> ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options)
|
||||||
=> await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options);
|
=> await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options);
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
async Task<IReadOnlyCollection<IThreadChannel>> ITextChannel.GetActiveThreadsAsync(RequestOptions options)
|
||||||
|
=> await GetActiveThreadsAsync(options);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IMessageChannel
|
#region IMessageChannel
|
||||||
|
|||||||
@@ -241,5 +241,9 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public Task RemoveUserAsync(IGuildUser user, RequestOptions options = null)
|
public Task RemoveUserAsync(IGuildUser user, RequestOptions options = null)
|
||||||
=> Discord.ApiClient.RemoveThreadMemberAsync(Id, user.Id, options);
|
=> Discord.ApiClient.RemoveThreadMemberAsync(Id, user.Id, options);
|
||||||
|
|
||||||
|
/// <inheritdoc/> <exception cref="NotSupportedException">This method is not supported in threads.</exception>
|
||||||
|
public override Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> throw new NotSupportedException("This method is not supported in threads.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,6 +234,10 @@ namespace Discord.Rest
|
|||||||
return base.TriggerTypingAsync(options);
|
return base.TriggerTypingAsync(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/> <exception cref="NotSupportedException">Threads are not supported in voice channels</exception>
|
||||||
|
public override Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> throw new NotSupportedException("Threads are not supported in voice channels");
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -68,10 +68,10 @@ namespace Discord.Rest
|
|||||||
return await client.ApiClient.ModifyThreadAsync(channel.Id, apiArgs, options).ConfigureAwait(false);
|
return await client.ApiClient.ModifyThreadAsync(channel.Id, apiArgs, options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(IGuild guild, BaseDiscordClient client, RequestOptions options)
|
public static async Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(IGuild guild, ulong channelId, BaseDiscordClient client, RequestOptions options)
|
||||||
{
|
{
|
||||||
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.Where(x => x.CategoryId == channelId).Select(x => RestThreadChannel.Create(client, 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,
|
||||||
|
|||||||
@@ -135,9 +135,9 @@ namespace Discord.WebSocket
|
|||||||
MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null, MessageFlags flags = MessageFlags.None, ForumTag[] tags = null)
|
MessageComponent components = null, ISticker[] stickers = null, Embed[] embeds = null, MessageFlags flags = MessageFlags.None, ForumTag[] tags = null)
|
||||||
=> ThreadHelper.CreatePostAsync(this, Discord, title, attachments, archiveDuration, slowmode, text, embed, options, allowedMentions, components, stickers, embeds, flags, tags?.Select(tag => tag.Id).ToArray());
|
=> ThreadHelper.CreatePostAsync(this, Discord, title, attachments, archiveDuration, slowmode, text, embed, options, allowedMentions, components, stickers, embeds, flags, tags?.Select(tag => tag.Id).ToArray());
|
||||||
|
|
||||||
/// <inheritdoc cref="IForumChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
/// <inheritdoc cref="ITextChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
||||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
public Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
=> ThreadHelper.GetActiveThreadsAsync(Guild, Discord, options);
|
=> ThreadHelper.GetActiveThreadsAsync(Guild, Id, Discord, options);
|
||||||
|
|
||||||
/// <inheritdoc cref="IForumChannel.GetJoinedPrivateArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/>
|
/// <inheritdoc cref="IForumChannel.GetJoinedPrivateArchivedThreadsAsync(int?, DateTimeOffset?, RequestOptions)"/>
|
||||||
public Task<IReadOnlyCollection<RestThreadChannel>> GetJoinedPrivateArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null)
|
public Task<IReadOnlyCollection<RestThreadChannel>> GetJoinedPrivateArchivedThreadsAsync(int? limit = null, DateTimeOffset? before = null, RequestOptions options = null)
|
||||||
|
|||||||
@@ -130,6 +130,11 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
return thread;
|
return thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="ITextChannel.GetActiveThreadsAsync(RequestOptions)"/>
|
||||||
|
public virtual Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> ThreadHelper.GetActiveThreadsAsync(Guild, Id, Discord, options);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Messages
|
#region Messages
|
||||||
@@ -378,6 +383,9 @@ namespace Discord.WebSocket
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
async Task<IThreadChannel> ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options)
|
async Task<IThreadChannel> ITextChannel.CreateThreadAsync(string name, ThreadType type, ThreadArchiveDuration autoArchiveDuration, IMessage message, bool? invitable, int? slowmode, RequestOptions options)
|
||||||
=> await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options);
|
=> await CreateThreadAsync(name, type, autoArchiveDuration, message, invitable, slowmode, options);
|
||||||
|
/// <inheritdoc />
|
||||||
|
async Task<IReadOnlyCollection<IThreadChannel>> ITextChannel.GetActiveThreadsAsync(RequestOptions options)
|
||||||
|
=> await GetActiveThreadsAsync(options);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IGuildChannel
|
#region IGuildChannel
|
||||||
|
|||||||
@@ -374,6 +374,10 @@ namespace Discord.WebSocket
|
|||||||
public override Task SyncPermissionsAsync(RequestOptions options = null)
|
public override Task SyncPermissionsAsync(RequestOptions options = null)
|
||||||
=> throw new NotSupportedException("This method is not supported in threads.");
|
=> throw new NotSupportedException("This method is not supported in threads.");
|
||||||
|
|
||||||
|
/// <inheritdoc/> <exception cref="NotSupportedException">This method is not supported in threads.</exception>
|
||||||
|
public override Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> throw new NotSupportedException("This method is not supported in threads.");
|
||||||
|
|
||||||
string IChannel.Name => Name;
|
string IChannel.Name => Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -296,6 +296,10 @@ namespace Discord.WebSocket
|
|||||||
return base.TriggerTypingAsync(options);
|
return base.TriggerTypingAsync(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/> <exception cref="NotSupportedException">Threads are not supported in voice channels</exception>
|
||||||
|
public override Task<IReadOnlyCollection<RestThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null)
|
||||||
|
=> throw new NotSupportedException("Threads are not supported in voice channels");
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
||||||
|
|||||||
@@ -220,5 +220,6 @@ namespace Discord
|
|||||||
public Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null, MessageFlags flags = MessageFlags.None) => throw new NotImplementedException();
|
public Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null, MessageFlags flags = MessageFlags.None) => throw new NotImplementedException();
|
||||||
public Task<IInviteMetadata> CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException();
|
public Task<IInviteMetadata> CreateInviteToApplicationAsync(DefaultApplications application, int? maxAge = 86400, int? maxUses = null, bool isTemporary = false, bool isUnique = false, RequestOptions options = null) => throw new NotImplementedException();
|
||||||
public Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) => throw new NotImplementedException();
|
public Task<IThreadChannel> CreateThreadAsync(string name, ThreadType type = ThreadType.PublicThread, ThreadArchiveDuration autoArchiveDuration = ThreadArchiveDuration.OneDay, IMessage message = null, bool? invitable = null, int? slowmode = null, RequestOptions options = null) => throw new NotImplementedException();
|
||||||
|
public Task<IReadOnlyCollection<IThreadChannel>> GetActiveThreadsAsync(RequestOptions options = null) => throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user