Table of Contents

Class InteractionService

Namespace
HeyBox.Interactions
Assembly
HeyBox.Net.Interactions.dll

提供构建交互服务的框架。

public class InteractionService : IDisposable
Inheritance
InteractionService
Implements
Inherited Members

Constructors

InteractionService(InteractionServiceConfig)

使用指定的配置初始化一个 InteractionService 类的新实例。

public InteractionService(InteractionServiceConfig config)

Parameters

config InteractionServiceConfig

交互服务的配置。

Properties

Modules

获取所有加载到 InteractionService 中的模块。

public IReadOnlyList<ModuleInfo> Modules { get; }

Property Value

IReadOnlyList<ModuleInfo>

SlashCommands

获取所有加载到 InteractionService 中的斜线命令。

public IReadOnlyList<SlashCommandInfo> SlashCommands { get; }

Property Value

IReadOnlyList<SlashCommandInfo>

Methods

AddGenericTypeConverter(Type, Type)

添加一个泛型类型的类型转换器。

public void AddGenericTypeConverter(Type targetType, Type converterType)

Parameters

targetType Type

类型转换器所转换类型的泛型约束。

converterType Type

泛型类型转换器实例。

AddGenericTypeConverter<T>(Type)

添加一个泛型类型的类型转换器。

public void AddGenericTypeConverter<T>(Type converterType)

Parameters

converterType Type

泛型类型转换器实例。

Type Parameters

T

类型转换器所转换类型的泛型约束。

AddGenericTypeReader(Type, Type)

添加一个泛型类型的类型读取器。

public void AddGenericTypeReader(Type targetType, Type readerType)

Parameters

targetType Type

类型读取器所读取类型的泛型约束。

readerType Type

泛型类型读取器实例。

AddGenericTypeReader<T>(Type)

添加一个泛型类型的类型读取器。

public void AddGenericTypeReader<T>(Type readerType)

Parameters

readerType Type

泛型类型读取器实例。

Type Parameters

T

类型读取器所读取类型的泛型约束。

AddModuleAsync(Type, IServiceProvider)

添加指定类型的模块。

public Task<ModuleInfo> AddModuleAsync(Type type, IServiceProvider services)

Parameters

type Type

要添加的模块的类型。

services IServiceProvider

要使用的依赖注入服务提供程序,如果不使用依赖注入,则传入 null

Returns

Task<ModuleInfo>

一个表示异步操作的任务,任务的结果是所创建的模块信息。

Exceptions

ArgumentException

当模块已经被添加时引发。

InvalidOperationException

当类型 type 不是有效的模块类型时引发。

AddModuleAsync<T>(IServiceProvider)

添加指定类型的模块。

public Task<ModuleInfo> AddModuleAsync<T>(IServiceProvider services) where T : class

Parameters

services IServiceProvider

要使用的依赖注入服务提供程序,如果不使用依赖注入,则传入 null

Returns

Task<ModuleInfo>

一个表示异步操作的任务,任务的结果是所创建的模块信息。

Type Parameters

T

要添加的模块的类型。

Exceptions

ArgumentException

当模块已经被添加时引发。

InvalidOperationException

当类型 T 不是有效的模块类型时引发。

AddModulesAsync(Assembly, IServiceProvider)

从指定的程序集中发现并加载命令模块。

public Task<IEnumerable<ModuleInfo>> AddModulesAsync(Assembly assembly, IServiceProvider services)

Parameters

assembly Assembly

定义命令模块的程序集。

services IServiceProvider

要使用的依赖注入服务提供程序,如果不使用依赖注入,则传入 null

Returns

Task<IEnumerable<ModuleInfo>>

一个表示异步操作的任务,任务的结果是所创建的所有模块信息。

AddTypeConverter(Type, TypeConverter)

添加一个具体类型的类型转换器。

public void AddTypeConverter(Type type, TypeConverter converter)

Parameters

type Type

类型转换器的主要目标类型。

converter TypeConverter

类型转换器实例。

AddTypeConverter<T>(TypeConverter)

添加一个具体类型的类型转换器。

public void AddTypeConverter<T>(TypeConverter converter)

Parameters

converter TypeConverter

类型转换器实例。

Type Parameters

T

类型转换器的主要目标类型。

AddTypeReader(Type, TypeReader)

添加一个具体类型的类型读取器。

public void AddTypeReader(Type type, TypeReader reader)

Parameters

type Type

类型读取器的主要目标类型。

reader TypeReader

类型读取器实例。

AddTypeReader<T>(TypeReader)

添加一个具体类型的类型读取器。

public void AddTypeReader<T>(TypeReader reader)

Parameters

reader TypeReader

类型读取器实例。

Type Parameters

T

类型读取器的主要目标类型。

CreateModuleAsync(string, IServiceProvider?, Action<ModuleBuilder>)

使用构建器工厂创建并加载 ModuleInfo

public Task<ModuleInfo> CreateModuleAsync(string name, IServiceProvider? services, Action<ModuleBuilder> buildFunc)

Parameters

name string

模块的名称。

services IServiceProvider

要使用的依赖注入服务提供程序,如果不使用依赖注入,则传入 null

buildFunc Action<ModuleBuilder>

构建模块的委托。

Returns

Task<ModuleInfo>

一个表示异步操作的任务,任务的结果是所创建的模块信息。

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()

ExecuteCommandAsync(IInteractionContext, IServiceProvider?)

执行指定的交互。

public Task<IResult> ExecuteCommandAsync(IInteractionContext context, IServiceProvider? services)

Parameters

context IInteractionContext

交互的上下文。

services IServiceProvider

要使用的依赖注入服务提供程序,如果不使用依赖注入,则传入 null

Returns

Task<IResult>

一个表示异步操作的任务,任务的结果是交互的结果。

GetModuleInfo<TModule>()

获取模块的信息。

public ModuleInfo GetModuleInfo<TModule>() where TModule : class

Returns

ModuleInfo

模块的信息。

Type Parameters

TModule

模块的类型,必需是 InteractionModuleBase<T> 的实现。

GetSlashCommandInfo<TModule>(string)

获取斜线命令的信息。

public SlashCommandInfo GetSlashCommandInfo<TModule>(string methodName) where TModule : class

Parameters

methodName string

斜线命令处理方法的名称,推荐使用 nameof 引用。

Returns

SlashCommandInfo

斜线命令的信息。

Type Parameters

TModule

声明斜线命令的模块类型,必需是 InteractionModuleBase<T> 的实现。

Exceptions

InvalidOperationException

当未找到指定的斜线命令时引发。

RemoveModuleAsync(ModuleInfo)

移除指定的模块。

public Task<bool> RemoveModuleAsync(ModuleInfo module)

Parameters

module ModuleInfo

要移除的模块。

Returns

Task<bool>

一个表示异步操作的任务,任务的结果是是否成功移除模块。

RemoveModuleAsync(Type)

移除指定类型的模块。

public Task<bool> RemoveModuleAsync(Type type)

Parameters

type Type

要移除的模块的类型。

Returns

Task<bool>

一个表示异步操作的任务,任务的结果是是否成功移除模块。

RemoveModuleAsync<T>()

移除指定类型的模块。

public Task<bool> RemoveModuleAsync<T>()

Returns

Task<bool>

一个表示异步操作的任务,任务的结果是是否成功移除模块。

Type Parameters

T

要移除的模块的类型。

SearchSlashCommand(ISlashCommandInteraction)

使用 ISlashCommandInteraction 搜索已注册到当前服务的斜线命令。

public SearchResult<SlashCommandInfo> SearchSlashCommand(ISlashCommandInteraction slashCommandInteraction)

Parameters

slashCommandInteraction ISlashCommandInteraction

要进行搜索的斜线命令交互。

Returns

SearchResult<SlashCommandInfo>

搜索结果。当成功时,结果包含找到的 SlashCommandInfo

TryRemoveGenericTypeReader(Type, out Type?)

尝试移除一个泛型类型的类型转换器。

public bool TryRemoveGenericTypeReader(Type type, out Type? readerType)

Parameters

type Type

类型转换器所转换类型的泛型约束。

readerType Type

被移除的泛型类型转换器实例。

Returns

bool

移除操作是否成功。

Remarks

从当前交互服务中移除的类型读取器不会立即从加载的模块或命令实例中取消引用,您需要重新加载模块以使更改生效。

TryRemoveGenericTypeReader<T>(out Type?)

尝试移除一个泛型类型的类型转换器。

public bool TryRemoveGenericTypeReader<T>(out Type? readerType)

Parameters

readerType Type

被移除的泛型类型转换器实例。

Returns

bool

移除操作是否成功。

Type Parameters

T

类型转换器所转换类型的泛型约束。

Remarks

从当前交互服务中移除的类型读取器不会立即从加载的模块或命令实例中取消引用,您需要重新加载模块以使更改生效。

TryRemoveTypeReader(Type, out TypeReader?)

尝试移除一个具体类型的类型转换器。

public bool TryRemoveTypeReader(Type type, out TypeReader? reader)

Parameters

type Type

类型转换器的主要目标类型。

reader TypeReader

被移除的类型转换器实例。

Returns

bool

移除操作是否成功。

Remarks

从当前交互服务中移除的类型读取器不会立即从加载的模块或命令实例中取消引用,您需要重新加载模块以使更改生效。

TryRemoveTypeReader<T>(out TypeReader?)

尝试移除一个具体类型的类型转换器。

public bool TryRemoveTypeReader<T>(out TypeReader? reader)

Parameters

reader TypeReader

被移除的类型转换器实例。

Returns

bool

移除操作是否成功。

Type Parameters

T

类型转换器的主要目标类型。

Remarks

从当前交互服务中移除的类型读取器不会立即从加载的模块或命令实例中取消引用,您需要重新加载模块以使更改生效。

Events

InteractionExecuted

当交互执行时引发。

public event Func<ICommandInfo?, IInteractionContext, IResult, Task> InteractionExecuted

Event Type

Func<ICommandInfo, IInteractionContext, IResult, Task>

Remarks

事件参数:

  1. ICommandInfo 参数是交互的信息。
  2. IInteractionContext 参数是交互的上下文。
  3. IResult 参数是交互的结果。

Log

当生成一条日志消息时引发。

public event Func<LogMessage, Task> Log

Event Type

Func<LogMessage, Task>

Remarks

事件参数:

  1. LogMessage 参数是描述日志消息的结构。

SlashCommandExecuted

当斜线命令执行时引发。

public event Func<SlashCommandInfo?, IInteractionContext, IResult, Task> SlashCommandExecuted

Event Type

Func<SlashCommandInfo, IInteractionContext, IResult, Task>

Remarks

事件参数:

  1. ICommandInfo 参数是交互的信息。
  2. IInteractionContext 参数是交互的上下文。
  3. IResult 参数是交互的结果。