Table of Contents

Class SocketThreadChannel

Namespace
Kook.WebSocket
Assembly
Kook.Net.WebSocket.dll

表示服务器中一个基于网关的帖子频道,可以浏览、发布和回复帖子。

public class SocketThreadChannel : SocketGuildChannel, IUpdateable, IThreadChannel, INestedChannel, IGuildChannel, IChannel, IEntity<ulong>, IDeletable, IMentionable
Inheritance
SocketThreadChannel
Implements
Inherited Members
Extension Methods

Properties

Category

获取此嵌套频道在服务器频道列表中所属的分组频道的。

public ICategoryChannel? Category { get; }

Property Value

ICategoryChannel

CategoryId

获取此嵌套频道在服务器频道列表中所属的分组频道的 ID。

public ulong? CategoryId { get; }

Property Value

ulong?

Remarks

如果当前频道不属于任何分组频道,则会返回 null

DefaultLayout

获取此频道设置的帖子默认布局。

public ThreadLayout? DefaultLayout { get; }

Property Value

ThreadLayout?

Remarks

warning

此属性值仅在调用 ModifyAsync(Action<ModifyThreadChannelProperties>, RequestOptions?) 后或网关下发变更后才会被设置。

DefaultSortOrder

获取此频道设置的帖子默认排序。

public ThreadSortOrder? DefaultSortOrder { get; }

Property Value

ThreadSortOrder?

Remarks

warning

此属性值仅在调用 ModifyAsync(Action<ModifyThreadChannelProperties>, RequestOptions?) 后或网关下发变更后才会被设置。

IsPermissionSynced

指示此嵌套频道的权限是否与其所属分组频道同步。

public bool? IsPermissionSynced { get; }

Property Value

bool?

Remarks

如果权限同步,则此属性返回 true;如果权限不同步,则返回 false;如果无法确定权限是否同步,则返回 null

KMarkdownMention

返回一个用于在 KMarkdown 格式文本中提及此对象的格式化字符串。

public string KMarkdownMention { get; }

Property Value

string

PlainTextMention

获取一个用于在纯文本格式文本中提及此对象的格式化字符串。

public string PlainTextMention { get; }

Property Value

string

PostCreationInterval

获取此频道设置的发帖速率限制。

public int PostCreationInterval { get; }

Property Value

int

一个 int,表示用户在可以发布另一条帖子之前需要等待的时间(以秒为单位);如果未启用,则为 0

Remarks

拥有 ManageMessagesManageChannels 权限的用户不受慢速模式延迟的限制。

ReplyInterval

获取此频道设置的回帖速率限制。

public int? ReplyInterval { get; }

Property Value

int?

一个 int,表示用户在可以对任意帖子发布另一条回复之前需要等待的时间(以秒为单位);如果未启用,则为 0

Remarks

拥有 ManageMessagesManageChannels 权限的用户不受慢速模式延迟的限制。

Topic

获取此频道的说明。

public string Topic { get; }

Property Value

string

Users

获取用户缓存列表中的可以访问此频道的所有用户。

public override IReadOnlyCollection<SocketGuildUser> Users { get; }

Property Value

IReadOnlyCollection<SocketGuildUser>

Remarks

此属性仅会返回缓存中可以访问此频道的所有用户,如果未启用用户列表缓存,或者由于网关事件确实导致本地缓存不同步,此属性所返回的用户列表可能不准确。

Methods

CreateInviteAsync(InviteMaxAge, InviteMaxUses, RequestOptions?)

创建一个到此频道新邀请。

public Task<IInvite> CreateInviteAsync(InviteMaxAge maxAge = InviteMaxAge._604800, InviteMaxUses maxUses = InviteMaxUses.Unlimited, RequestOptions? options = null)

Parameters

maxAge InviteMaxAge

邀请链接的有效时长,NeverExpires 表示永不过期。

maxUses InviteMaxUses

邀请链接的可用人次,Unlimited 表示无限制。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<IInvite>

一个表示异步邀请创建操作的任务。任务的结果包含所创建的邀请链接的元数据,其中包含有关邀请链接的信息。

CreateInviteAsync(int?, int?, RequestOptions?)

创建一个到此频道新邀请。

public Task<IInvite> CreateInviteAsync(int? maxAge = 604800, int? maxUses = null, RequestOptions? options = null)

Parameters

maxAge int?

邀请链接的有效时长,null 表示永不过期。

maxUses int?

邀请链接的可用人次,null 表示无限制。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<IInvite>

一个表示异步邀请创建操作的任务。任务的结果包含所创建的邀请链接的元数据,其中包含有关邀请链接的信息。

CreateThreadAsync(string, ICard, string?, IThreadCategory?, IEnumerable<ThreadTag>?, RequestOptions?)

发布一个新的帖子到此帖子频道。

public Task<RestThread> CreateThreadAsync(string title, ICard card, string? cover = null, IThreadCategory? category = null, IEnumerable<ThreadTag>? tags = null, RequestOptions? options = null)

Parameters

title string

帖子标题。

card ICard

帖子的卡片内容。

cover string

帖子封面的图片链接。

category IThreadCategory

帖子的分区。

tags IEnumerable<ThreadTag>

帖子的话题标签。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<RestThread>

一个表示异步修改操作的任务。任务的结果包含新创建的帖子。

CreateThreadAsync(string, IEnumerable<ICard>, string?, IThreadCategory?, IEnumerable<ThreadTag>?, RequestOptions?)

发布一个新的帖子到此帖子频道。

public Task<RestThread> CreateThreadAsync(string title, IEnumerable<ICard> cards, string? cover = null, IThreadCategory? category = null, IEnumerable<ThreadTag>? tags = null, RequestOptions? options = null)

Parameters

title string

帖子标题。

cards IEnumerable<ICard>

帖子的卡片内容。

cover string

帖子封面的图片链接。

category IThreadCategory

帖子的分区。

tags IEnumerable<ThreadTag>

帖子的话题标签。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<RestThread>

一个表示异步修改操作的任务。任务的结果包含新创建的帖子。

CreateThreadAsync(string, string, bool, string?, IThreadCategory?, IEnumerable<ThreadTag>?, RequestOptions?)

发布一个新的帖子到此帖子频道。

public Task<RestThread> CreateThreadAsync(string title, string content, bool isKMarkdown = false, string? cover = null, IThreadCategory? category = null, IEnumerable<ThreadTag>? tags = null, RequestOptions? options = null)

Parameters

title string

帖子标题。

content string

帖子文本内容,文本将会被包装在无侧边卡片内发送。

isKMarkdown bool

是否为 KMarkdown 格式。

cover string

帖子封面的图片链接。

category IThreadCategory

帖子的分区。

tags IEnumerable<ThreadTag>

帖子的话题标签。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<RestThread>

一个表示异步修改操作的任务。任务的结果包含新创建的帖子。

DeleteThreadAsync(IThread, RequestOptions?)

删除一个帖子。

public Task DeleteThreadAsync(IThread thread, RequestOptions? options = null)

Parameters

thread IThread

要删除的帖子。

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步删除操作的任务。

DeleteThreadAsync(ulong, RequestOptions?)

删除一个帖子。

public Task DeleteThreadAsync(ulong threadId, RequestOptions? options = null)

Parameters

threadId ulong

要删除的帖子的 ID。

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步删除操作的任务。

DeleteThreadContentAsync(IThread, RequestOptions?)

删除一个帖子的主楼内容。

public Task DeleteThreadContentAsync(IThread thread, RequestOptions? options = null)

Parameters

thread IThread

要删除其主楼内容的帖子。

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步删除操作的任务。

Remarks

当帖子无任何评论时,删除主楼内容会导致帖子被删除。

DeleteThreadContentAsync(ulong, RequestOptions?)

删除一个帖子的主楼内容。

public Task DeleteThreadContentAsync(ulong threadId, RequestOptions? options = null)

Parameters

threadId ulong

要删除其主楼内容的帖子的 ID。

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步删除操作的任务。

Remarks

当帖子无任何评论时,删除主楼内容会导致帖子被删除。

GetInvitesAsync(RequestOptions?)

获取此嵌套频道的所有邀请信息。

public Task<IReadOnlyCollection<IInvite>> GetInvitesAsync(RequestOptions? options = null)

Parameters

options RequestOptions

发送请求时要使用的选项。

Returns

Task<IReadOnlyCollection<IInvite>>

一个表示异步获取操作的任务。任务的结果包含此频道中找到的所有邀请信息。

GetThreadAsync(ulong, RequestOptions?)

从此帖子频道获取一个帖子。

public Task<RestThread> GetThreadAsync(ulong id, RequestOptions? options = null)

Parameters

id ulong

帖子的 ID。

options RequestOptions

发送请求时要使用的选项。

Returns

Task<RestThread>

一个表示异步获取操作的任务。任务结果包含具有指定 ID 的帖子。

GetThreadCategoriesAsync(RequestOptions?)

获取此帖子频道的所有帖子分区。

public Task<IReadOnlyCollection<RestThreadCategory>> GetThreadCategoriesAsync(RequestOptions? options = null)

Parameters

options RequestOptions

发送请求时要使用的选项。

Returns

Task<IReadOnlyCollection<RestThreadCategory>>

一个表示异步修改操作的任务。任务的结果包含此帖子频道的所有帖子分区。

GetThreadsAsync(IThread, ThreadSortOrder, int, IThreadCategory?, RequestOptions?)

获取此帖子频道中的一些帖子。

public IAsyncEnumerable<IReadOnlyCollection<RestThread>> GetThreadsAsync(IThread referenceThread, ThreadSortOrder sortOrder = ThreadSortOrder.CreationTime, int limit = 30, IThreadCategory? category = null, RequestOptions? options = null)

Parameters

referenceThread IThread

要开始获取帖子的参考位置的帖子,获取的结果不包含此帖子。

sortOrder ThreadSortOrder

获取帖子列表的排序方式。

limit int

要获取的帖子数量。

category IThreadCategory

要获取的帖子所在的分区,如果为 null,则获取所有分区的帖子。

options RequestOptions

发送请求时要使用的选项。

Returns

IAsyncEnumerable<IReadOnlyCollection<RestThread>>

分页的帖子集合的异步可枚举对象。

Remarks

important

返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。


warning

请勿一次性获取过多帖子,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。


此方法将尝试获取此频道最新的 limit 条帖子。此方法会根据 MaxMessagesPerBatch 将请求拆分。换句话说,如果要获取 500 条帖子,而 MaxMessagesPerBatch 的常量为 50,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。

GetThreadsAsync(DateTimeOffset, ThreadSortOrder, int, IThreadCategory?, RequestOptions?)

获取此帖子频道中的一些帖子。

public IAsyncEnumerable<IReadOnlyCollection<RestThread>> GetThreadsAsync(DateTimeOffset referenceTimestamp, ThreadSortOrder sortOrder = ThreadSortOrder.CreationTime, int limit = 30, IThreadCategory? category = null, RequestOptions? options = null)

Parameters

referenceTimestamp DateTimeOffset

要开始获取帖子的参考位置的帖子的创建时间或最后活跃时间,由 sortOrder 参数决定,获取的结果不包含其时间为此值的帖子。

sortOrder ThreadSortOrder

获取帖子列表的排序方式。

limit int

要获取的帖子数量。

category IThreadCategory

要获取的帖子所在的分区,如果为 null,则获取所有分区的帖子。

options RequestOptions

发送请求时要使用的选项。

Returns

IAsyncEnumerable<IReadOnlyCollection<RestThread>>

分页的帖子集合的异步可枚举对象。

Remarks

important

返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。


warning

请勿一次性获取过多帖子,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。


此方法将尝试获取此频道最新的 limit 条帖子。此方法会根据 MaxThreadsPerBatch 将请求拆分。换句话说,如果要获取 500 条帖子,而 MaxThreadsPerBatch 的常量为 50,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。

GetThreadsAsync(int, IThreadCategory?, RequestOptions?)

获取此帖子频道中的最新的一些帖子。

public IAsyncEnumerable<IReadOnlyCollection<RestThread>> GetThreadsAsync(int limit = 30, IThreadCategory? category = null, RequestOptions? options = null)

Parameters

limit int

要获取的帖子数量。

category IThreadCategory

要获取的帖子所在的分区,如果为 null,则获取所有分区的帖子。

options RequestOptions

发送请求时要使用的选项。

Returns

IAsyncEnumerable<IReadOnlyCollection<RestThread>>

分页的帖子集合的异步可枚举对象。

Remarks

important

返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。


warning

请勿一次性获取过多帖子,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。


此方法将尝试获取此频道最新的 limit 条帖子。此方法会根据 MaxThreadsPerBatch 将请求拆分。换句话说,如果要获取 300 条帖子,而 MaxThreadsPerBatch 的常量为 30,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。

GetUser(ulong)

获取此频道中的一个服务器用户。

public override SocketGuildUser? GetUser(ulong id)

Parameters

id ulong

要获取的服务器用户的 ID。

Returns

SocketGuildUser

如果找到了具有指定 ID 的服务器用户,则返回该用户;否则返回 null

ModifyAsync(Action<ModifyThreadChannelProperties>, RequestOptions?)

修改此频道的属性。

public virtual Task ModifyAsync(Action<ModifyThreadChannelProperties> func, RequestOptions? options = null)

Parameters

func Action<ModifyThreadChannelProperties>

一个包含修改帖子频道的属性的委托。

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步修改操作的任务。

See Also

SyncPermissionsAsync(RequestOptions?)

同步此嵌套频道的权限配置与其所属分组频道一致,并保持同步。

public virtual Task SyncPermissionsAsync(RequestOptions? options = null)

Parameters

options RequestOptions

发送请求时要使用的选项。

Returns

Task

一个表示异步频道权限同步操作的任务。