melobot.bot¶
bot 层组件¶
- class melobot.bot.Bot[源代码]¶
基类:
Hookable
[BotLifeSpan
]bot 类
- 变量:
name (str) -- bot 对象的名称
logger (GenericLogger) -- bot 对象使用的日志器
- __init__(name: str = 'melobot', /, logger: GenericLogger | None = None, enable_log: bool = True) None [源代码]¶
初始化 bot
- 参数:
name (str) -- bot 名称
logger (GenericLogger | None) -- bot 使用的日志器,符合
GenericLogger
的接口即可。 可使用 melobot 内置的Logger
,或经过logger_patch()
修补的日志器enable_log (bool) -- 是否启用日志功能
- 返回类型:
None
- property loop: AbstractEventLoop¶
获得当前 bot 运行时的事件循环对象
- add_input(src: AbstractInSource) Bot [源代码]¶
绑定输入源
- 参数:
src (AbstractInSource) -- 输入源
- 返回:
bot 对象,因此支持链式调用
- 返回类型:
- add_output(src: AbstractOutSource) Bot [源代码]¶
绑定输出源
- 参数:
src (AbstractOutSource) -- 输出源
- 返回:
bot 对象,因此支持链式调用
- 返回类型:
- add_io(src: AbstractIOSource) Bot [源代码]¶
绑定输入输出源
- 参数:
src (AbstractIOSource) -- 输入输出源
- 返回:
bot 对象,因此支持链式调用
- 返回类型:
- add_protocol(pstack: ProtocolStack) Bot [源代码]¶
绑定完整的协议栈,这包含了一组协同工作的输入源、输出源和适配器
- 参数:
pstack (ProtocolStack) -- 协议栈对象
- 返回:
bot 对象,因此支持链式调用
- 返回类型:
- load_plugin(plugin: ModuleType | str | PathLike[str] | PluginPlanner, load_depth: int = 1) Bot [源代码]¶
加载插件
- 参数:
plugin (ModuleType | str | PathLike[str] | PluginPlanner) -- 可以被加载为插件的对象(插件目录对应的模块,插件的目录路径,可直接 import 包名称,插件管理器对象)
load_depth (int) -- 插件加载时的相对引用深度,默认值 1 只支持向上引用到插件目录一级。 增加为 2 可以引用到插件目录的父目录一级,依此类推。 此参数只在 plugin 参数为插件的目录路径时有效。
- 返回:
bot 对象,因此支持链式调用
- 返回类型:
- load_plugins(plugins: Iterable[ModuleType | str | PathLike[str] | PluginPlanner], load_depth: int = 1) None [源代码]¶
与
load_plugin()
行为类似,但是参数变为可迭代对象- 参数:
plugins (Iterable[ModuleType | str | PathLike[str] | PluginPlanner]) -- 可迭代对象,包含:可以被加载为插件的对象(插件目录对应的模块,插件的目录路径,插件对象)
load_depth (int) -- 参见
load_plugin()
同名参数
- 返回类型:
None
- load_plugins_dir(pdir: str | PathLike[str], load_depth: int = 1) None [源代码]¶
与
load_plugin()
行为类似,但是参数变为插件目录的父目录,本方法可以加载单个目录下的多个插件- 参数:
load_depth (int) -- 参见
load_plugin()
同名参数
- 返回类型:
None
- load_plugins_dirs(pdirs: Iterable[str | PathLike[str]], load_depth: int = 1) None [源代码]¶
与
load_plugins_dir()
行为类似,但是参数变为可迭代对象,每个元素为包含插件目录的父目录。 本方法可以加载多个目录下的多个插件
- get_adapter(type: LiteralString | type[Adapter] | None = None, filter: Callable[[Adapter], bool] | None = None) Adapter | None [源代码]¶
获取 bot 所绑定的适配器
获取绑定的插件中的共享对象
- 参数:
- 返回:
共享对象
- 返回类型:
- property on_loaded: Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]]¶
给 bot 注册
BotLifeSpan.LOADED
阶段 hook 的装饰器
- property on_reloaded: Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]]¶
给 bot 注册
BotLifeSpan.RELOADED
阶段 hook 的装饰器
- property on_started: Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]]¶
给 bot 注册
BotLifeSpan.STARTED
阶段 hook 的装饰器
- property on_close: Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]]¶
给 bot 注册
BotLifeSpan.CLOSE
阶段 hook 的装饰器
- property on_stopped: Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]]¶
给 bot 注册
BotLifeSpan.STOPPED
阶段 hook 的装饰器
- on(*periods: HookEnumT) Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]] ¶
注册一个 hook
- 参数:
periods (HookEnumT) -- 要绑定的 hook 类型
- 返回:
装饰器
- 返回类型:
Callable[[AsyncCallable[~P, None]], AsyncCallable[~P, None]]