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
SlashCommands
获取所有加载到 InteractionService 中的斜线命令。
public IReadOnlyList<SlashCommandInfo> SlashCommands { get; }
Property Value
Methods
AddGenericTypeConverter(Type, Type)
添加一个泛型类型的类型转换器。
public void AddGenericTypeConverter(Type targetType, Type converterType)
Parameters
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
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
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
RemoveModuleAsync(Type)
移除指定类型的模块。
public Task<bool> RemoveModuleAsync(Type type)
Parameters
type
Type要移除的模块的类型。
Returns
RemoveModuleAsync<T>()
移除指定类型的模块。
public Task<bool> RemoveModuleAsync<T>()
Returns
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
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
Remarks
事件参数:
- ICommandInfo 参数是交互的信息。
- IInteractionContext 参数是交互的上下文。
- IResult 参数是交互的结果。
Log
当生成一条日志消息时引发。
public event Func<LogMessage, Task> Log
Event Type
Remarks
事件参数:
- LogMessage 参数是描述日志消息的结构。
SlashCommandExecuted
当斜线命令执行时引发。
public event Func<SlashCommandInfo?, IInteractionContext, IResult, Task> SlashCommandExecuted
Event Type
Remarks
事件参数:
- ICommandInfo 参数是交互的信息。
- IInteractionContext 参数是交互的上下文。
- IResult 参数是交互的结果。