Class SocketTextChannel
表示服务器中一个基于网关的具有文字聊天能力的频道,可以发送和接收消息。
public class SocketTextChannel : SocketGuildChannel, IUpdateable, ITextChannel, INestedChannel, IGuildChannel, IDeletable, IMentionable, ISocketMessageChannel, IMessageChannel, IChannel, IEntity<ulong>
- Inheritance
-
SocketTextChannel
- Implements
- Derived
- Inherited Members
- Extension Methods
Properties
CachedMessages
获取此频道缓存的所有消息。
public IReadOnlyCollection<SocketMessage> CachedMessages { get; }
Property Value
Remarks
warning
要想通过此属性获取缓存的消息,需要启用缓存功能,否则此属性将始终返回空集合。缓存功能是默认禁用的,要想启用缓存,请参考 MessageCacheSize。
此属性从本地的内存缓存中获取消息实体,不会向 KOOK 发送额外的 API 请求。所获取的消息也可能是已经被删除的消息。
Category
获取此嵌套频道在服务器频道列表中所属的分组频道的。
public ICategoryChannel? Category { get; }
Property Value
Remarks
如果当前频道不属于任何分组频道,则会返回 null
。
CategoryId
获取此嵌套频道在服务器频道列表中所属的分组频道的 ID。
public ulong? CategoryId { get; }
Property Value
Remarks
如果当前频道不属于任何分组频道,则会返回 null
。
IsPermissionSynced
指示此嵌套频道的权限是否与其所属分组频道同步。
public bool? IsPermissionSynced { get; }
Property Value
- bool?
Remarks
如果权限同步,则此属性返回 true
;如果权限不同步,则返回 false
;如果无法确定权限是否同步,则返回 null
。
KMarkdownMention
返回一个用于在 KMarkdown 格式文本中提及此对象的格式化字符串。
public string KMarkdownMention { get; }
Property Value
PlainTextMention
获取一个用于在纯文本格式文本中提及此对象的格式化字符串。
public string PlainTextMention { get; }
Property Value
SlowModeInterval
获取此频道当前设置的慢速模式延迟。
public int SlowModeInterval { get; }
Property Value
- int
一个
int
,表示用户在可以发送另一条消息之前需要等待的时间(以秒为单位);如果未启用,则为0
。
Remarks
拥有 ManageMessages 或 ManageChannels 权限的用户不受慢速模式延迟的限制。
Topic
获取此频道的说明。
public string Topic { get; }
Property Value
Users
获取用户缓存列表中的可以访问此频道的所有用户。
public override IReadOnlyCollection<SocketGuildUser> Users { get; }
Property Value
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
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
DeleteMessageAsync(IMessage, RequestOptions?)
删除一条消息.
public Task DeleteMessageAsync(IMessage message, RequestOptions? options = null)
Parameters
message
IMessage要删除的消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步删除操作的任务。
DeleteMessageAsync(Guid, RequestOptions?)
删除一条消息。
public Task DeleteMessageAsync(Guid messageId, RequestOptions? options = null)
Parameters
messageId
Guid要删除的消息的 ID。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步删除操作的任务。
GetCachedMessage(Guid)
获取此频道缓存的消息。
public SocketMessage? GetCachedMessage(Guid id)
Parameters
id
Guid消息的 ID。
Returns
- SocketMessage
如果获取到了缓存的消息,则返回该消息实体;否则返回
null
。
Remarks
warning
要想通过此方法获取缓存的消息,需要启用缓存功能,否则此方法将始终返回 null
。缓存功能是默认禁用的,要想启用缓存,请参考
MessageCacheSize。
此方法从本地的内存缓存中获取消息实体,不会向 KOOK 发送额外的 API 请求。所获取的消息也可能是已经被删除的消息。
GetCachedMessages(IMessage, Direction, int)
获取此频道缓存的多条消息。
public IReadOnlyCollection<SocketMessage> GetCachedMessages(IMessage referenceMessage, Direction dir, int limit = 50)
Parameters
Returns
- IReadOnlyCollection<SocketMessage>
获取到的多条缓存消息。
Remarks
warning
要想通过此方法获取缓存的消息,需要启用缓存功能,否则此方法将始终返回空集合。缓存功能是默认禁用的,要想启用缓存,请参考 MessageCacheSize。
此方法从本地的内存缓存中获取消息实体,不会向 KOOK 发送额外的 API 请求。所获取的消息也可能是已经被删除的消息。
GetCachedMessages(Guid, Direction, int)
获取此频道缓存的多条消息。
public IReadOnlyCollection<SocketMessage> GetCachedMessages(Guid referenceMessageId, Direction dir, int limit = 50)
Parameters
Returns
- IReadOnlyCollection<SocketMessage>
获取到的多条缓存消息。
Remarks
warning
要想通过此方法获取缓存的消息,需要启用缓存功能,否则此方法将始终返回空集合。缓存功能是默认禁用的,要想启用缓存,请参考 MessageCacheSize。
此方法从本地的内存缓存中获取消息实体,不会向 KOOK 发送额外的 API 请求。所获取的消息也可能是已经被删除的消息。
GetCachedMessages(int)
获取此频道缓存的多条消息。
public IReadOnlyCollection<SocketMessage> GetCachedMessages(int limit = 50)
Parameters
limit
int要获取的缓存消息的数量。
Returns
- IReadOnlyCollection<SocketMessage>
此频道缓存的所有消息。
Remarks
此重载将会从缓存中获取最新的指定数量的缓存消息实体。
warning
要想通过此方法获取缓存的消息,需要启用缓存功能,否则此方法将始终返回空集合。缓存功能是默认禁用的,要想启用缓存,请参考 MessageCacheSize。
此方法从本地的内存缓存中获取消息实体,不会向 KOOK 发送额外的 API 请求。所获取的消息也可能是已经被删除的消息。
GetInvitesAsync(RequestOptions?)
获取此嵌套频道的所有邀请信息。
public Task<IReadOnlyCollection<IInvite>> GetInvitesAsync(RequestOptions? options = null)
Parameters
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<IReadOnlyCollection<IInvite>>
一个表示异步获取操作的任务。任务的结果包含此频道中找到的所有邀请信息。
GetMessageAsync(Guid, RequestOptions?)
从此消息频道获取一条消息。
public Task<IMessage> GetMessageAsync(Guid id, RequestOptions? options = null)
Parameters
id
Guid消息的 ID。
options
RequestOptions发送请求时要使用的选项。
Returns
GetMessagesAsync(IMessage, Direction, int, RequestOptions?)
获取此消息频道中的一些消息。
public virtual IAsyncEnumerable<IReadOnlyCollection<IMessage>> GetMessagesAsync(IMessage referenceMessage, Direction dir, int limit = 50, RequestOptions? options = null)
Parameters
referenceMessage
IMessage要开始获取消息的参考位置的消息。
dir
Direction要以参考位置为基准,获取消息的方向。
limit
int要获取的消息数量。
options
RequestOptions发送请求时要使用的选项。
Returns
- IAsyncEnumerable<IReadOnlyCollection<IMessage>>
分页的消息集合的异步可枚举对象。
Remarks
important
返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。
warning
请勿一次性获取过多消息,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。
此方法将尝试获取此频道最新的
limit
条消息。此方法会根据 MaxMessagesPerBatch
将请求拆分。换句话说,如果要获取 500 条消息,而 MaxMessagesPerBatch 的常量为
50
,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。
FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>)
方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。
GetMessagesAsync(Guid, Direction, int, RequestOptions?)
获取此消息频道中的一些消息。
public virtual IAsyncEnumerable<IReadOnlyCollection<IMessage>> GetMessagesAsync(Guid referenceMessageId, Direction dir, int limit = 50, RequestOptions? options = null)
Parameters
referenceMessageId
Guid要开始获取消息的参考位置的消息的 ID。
dir
Direction要以参考位置为基准,获取消息的方向。
limit
int要获取的消息数量。
options
RequestOptions发送请求时要使用的选项。
Returns
- IAsyncEnumerable<IReadOnlyCollection<IMessage>>
分页的消息集合的异步可枚举对象。
Remarks
important
返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。
warning
请勿一次性获取过多消息,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。
此方法将尝试获取此频道最新的
limit
条消息。此方法会根据 MaxMessagesPerBatch
将请求拆分。换句话说,如果要获取 500 条消息,而 MaxMessagesPerBatch 的常量为
50
,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。
FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>)
方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。
GetMessagesAsync(int, RequestOptions?)
获取此消息频道中的最新的一些消息。
public virtual IAsyncEnumerable<IReadOnlyCollection<IMessage>> GetMessagesAsync(int limit = 50, RequestOptions? options = null)
Parameters
limit
int要获取的消息数量。
options
RequestOptions发送请求时要使用的选项。
Returns
- IAsyncEnumerable<IReadOnlyCollection<IMessage>>
分页的消息集合的异步可枚举对象。
Remarks
important
返回的集合是一个异步可枚举对象;调用 FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>) 可以异步枚举所有分页,并将其合并为一个集合。
warning
请勿一次性获取过多消息,这可能会导致抢占式速率限制,甚至触发实际的速率限制,从而导致 Bot 服务暂停。
此方法将尝试获取此频道最新的
limit
条消息。此方法会根据 MaxMessagesPerBatch
将请求拆分。换句话说,如果要获取 500 条消息,而 MaxMessagesPerBatch 的常量为
50
,则请求将被拆分为 10 个单独请求,因此异步枚举器会异步枚举返回 10 个响应。
FlattenAsync<T>(IAsyncEnumerable<IEnumerable<T>>)
方法可以展开这 10 个响应返回的集合,并将其合并为一个集合。
GetPinnedMessagesAsync(RequestOptions?)
获取此频道中的所有置顶消息。
public Task<IReadOnlyCollection<RestMessage>> GetPinnedMessagesAsync(RequestOptions? options = null)
Parameters
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<IReadOnlyCollection<RestMessage>>
一个表示异步获取操作的任务。任务的结果包含此频道中找到的所有置顶消息。
GetUser(ulong)
获取此频道中的一个服务器用户。
public override SocketGuildUser? GetUser(ulong id)
Parameters
id
ulong要获取的服务器用户的 ID。
Returns
- SocketGuildUser
如果找到了具有指定 ID 的服务器用户,则返回该用户;否则返回
null
。
ModifyAsync(Action<ModifyTextChannelProperties>, RequestOptions?)
修改此频道有关文字聊天能力的属性。
public virtual Task ModifyAsync(Action<ModifyTextChannelProperties> func, RequestOptions? options = null)
Parameters
func
Action<ModifyTextChannelProperties>一个包含修改频道有关文字聊天能力的属性的委托。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步修改操作的任务。
- See Also
ModifyMessageAsync(Guid, Action<MessageProperties>, RequestOptions?)
修改一条消息。
public Task ModifyMessageAsync(Guid messageId, Action<MessageProperties> func, RequestOptions? options = null)
Parameters
messageId
Guid要修改的消息的 ID。
func
Action<MessageProperties>一个包含修改消息属性的委托。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步修改操作的任务。
- See Also
ModifyMessageAsync<T>(Guid, Action<MessageProperties<T>>, RequestOptions?)
修改一条消息。
public Task ModifyMessageAsync<T>(Guid messageId, Action<MessageProperties<T>> func, RequestOptions? options = null)
Parameters
messageId
Guid要修改的消息的 ID。
func
Action<MessageProperties<T>>一个包含修改消息属性的委托。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步修改操作的任务。
Type Parameters
T
模板参数的类型。
- See Also
SendCardAsync(ICard, IQuote?, IUser?, RequestOptions?)
发送卡片消息到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendCardAsync(ICard card, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
card
ICard要发送的卡片。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendCardsAsync(IEnumerable<ICard>, IQuote?, IUser?, RequestOptions?)
发送卡片消息到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendCardsAsync(IEnumerable<ICard> cards, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
cards
IEnumerable<ICard>要发送的卡片。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendCardsAsync<T>(int, T, IQuote?, IUser?, JsonSerializerOptions?, RequestOptions?)
发送卡片消息到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendCardsAsync<T>(int templateId, T parameters, IQuote? quote = null, IUser? ephemeralUser = null, JsonSerializerOptions? jsonSerializerOptions = null, RequestOptions? options = null)
Parameters
templateId
int消息模板的 ID。
parameters
T传入消息模板的参数。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
jsonSerializerOptions
JsonSerializerOptions序列化模板参数时要使用的序列化选项。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
Type Parameters
T
参数的类型。
SendFileAsync(FileAttachment, IQuote?, IUser?, RequestOptions?)
发送文件到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendFileAsync(FileAttachment attachment, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
attachment
FileAttachment文件的附件信息。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendFileAsync(Stream, string, AttachmentType, IQuote?, IUser?, RequestOptions?)
发送文件到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendFileAsync(Stream stream, string filename, AttachmentType type = AttachmentType.File, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
stream
Stream文件的流。
filename
string文件名。
type
AttachmentType文件的媒体类型。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendFileAsync(string, string?, AttachmentType, IQuote?, IUser?, RequestOptions?)
发送文件到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendFileAsync(string path, string? filename = null, AttachmentType type = AttachmentType.File, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
path
string文件的路径。
filename
string文件名。
type
AttachmentType文件的媒体类型。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendTextAsync(string, IQuote?, IUser?, RequestOptions?)
发送文本消息到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendTextAsync(string text, IQuote? quote = null, IUser? ephemeralUser = null, RequestOptions? options = null)
Parameters
text
string要发送的文本。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
SendTextAsync<T>(int, T, IQuote?, IUser?, JsonSerializerOptions?, RequestOptions?)
发送文本消息到此消息频道。
public Task<Cacheable<IUserMessage, Guid>> SendTextAsync<T>(int templateId, T parameters, IQuote? quote = null, IUser? ephemeralUser = null, JsonSerializerOptions? jsonSerializerOptions = null, RequestOptions? options = null)
Parameters
templateId
int消息模板的 ID。
parameters
T传入消息模板的参数。
quote
IQuote消息引用,用于回复消息。
ephemeralUser
IUser临时消息的接收者。如果设置为指定的用户,则仅该用户可以看到此消息,否则所有人都可以看到此消息。
jsonSerializerOptions
JsonSerializerOptions序列化模板参数时要使用的序列化选项。
options
RequestOptions发送请求时要使用的选项。
Returns
- Task<Cacheable<IUserMessage, Guid>>
一个表示异步发送操作的任务。任务的结果包含所发送消息的可延迟加载的消息对象。
Type Parameters
T
参数的类型。
SyncPermissionsAsync(RequestOptions?)
同步此嵌套频道的权限配置与其所属分组频道一致,并保持同步。
public virtual Task SyncPermissionsAsync(RequestOptions? options = null)
Parameters
options
RequestOptions发送请求时要使用的选项。
Returns
- Task
一个表示异步频道权限同步操作的任务。