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

参数:
返回类型:

None

property loop: AbstractEventLoop

获得当前 bot 运行时的事件循环对象

add_input(src: AbstractInSource) Bot[源代码]

绑定输入源

参数:

src (AbstractInSource) -- 输入源

返回:

bot 对象,因此支持链式调用

返回类型:

Bot

add_output(src: AbstractOutSource) Bot[源代码]

绑定输出源

参数:

src (AbstractOutSource) -- 输出源

返回:

bot 对象,因此支持链式调用

返回类型:

Bot

add_io(src: AbstractIOSource) Bot[源代码]

绑定输入输出源

参数:

src (AbstractIOSource) -- 输入输出源

返回:

bot 对象,因此支持链式调用

返回类型:

Bot

add_adapter(adapter: Adapter) Bot[源代码]

绑定适配器

参数:

adapter (Adapter) -- 适配器对象

返回:

bot 对象,因此支持链式调用

返回类型:

Bot

add_protocol(pstack: ProtocolStack) Bot[源代码]

绑定完整的协议栈,这包含了一组协同工作的输入源、输出源和适配器

参数:

pstack (ProtocolStack) -- 协议栈对象

返回:

bot 对象,因此支持链式调用

返回类型:

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 对象,因此支持链式调用

返回类型:

Bot

load_plugins(plugins: Iterable[ModuleType | str | PathLike[str] | PluginPlanner], load_depth: int = 1) None[源代码]

load_plugin() 行为类似,但是参数变为可迭代对象

参数:
返回类型:

None

load_plugins_dir(pdir: str | PathLike[str], load_depth: int = 1) None[源代码]

load_plugin() 行为类似,但是参数变为插件目录的父目录,本方法可以加载单个目录下的多个插件

参数:
返回类型:

None

load_plugins_dirs(pdirs: Iterable[str | PathLike[str]], load_depth: int = 1) None[源代码]

load_plugins_dir() 行为类似,但是参数变为可迭代对象,每个元素为包含插件目录的父目录。 本方法可以加载多个目录下的多个插件

参数:
返回类型:

None

async core_run() None[源代码]

运行 bot 的方法,可以在异步事件循环中自由地使用

若使用此方法,则需要自行管理异步事件循环

返回类型:

None

run(debug: bool = False) None[源代码]

安全地运行 bot 的阻塞方法,这适用于只运行单一 bot 的情况

参数:

debug (bool) -- 是否启用 asyncio 的调试模式,但是这不会更改 asyncio 日志器的日志等级

返回类型:

None

classmethod start(*bots: Bot, debug: bool = False) None[源代码]

安全地同时运行多个 bot 的阻塞方法

参数:
  • bots (Bot) -- 要运行的 bot 对象

  • debug (bool) -- 参见 run() 同名参数

返回类型:

None

async close() None[源代码]

停止并关闭当前 bot

返回类型:

None

async restart() NoReturn[源代码]

重启当前 bot,需要通过模块运行模式启动 bot 主脚本:

python3 -m melobot run [*.py]
返回类型:

NoReturn

get_adapter(type: LiteralString | type[Adapter] | None = None, filter: Callable[[Adapter], bool] | None = None) Adapter | None[源代码]

获取 bot 所绑定的适配器

参数:
  • type (LiteralString | type[Adapter] | None) -- 适配器的类型(可传入协议字符串或协议类型),为空时才使用 filter 参数

  • filter (Callable[[Adapter], bool] | None) -- 过滤函数,返回 True 则表明需要该适配器。为空则不使用

返回:

适配器或空

返回类型:

Adapter | None

get_adapters(filter: Callable[[Adapter], bool] | None = None) set[Adapter][源代码]

获取一组适配器

参数:

filter (Callable[[Adapter], bool] | None) -- 参见 get_adapter() 同名参数。但此处为空时直接获取所有适配器

返回:

适配器的集合

返回类型:

set[Adapter]

get_plugins() list[str][源代码]

获取所有绑定的插件的名称

返回:

所绑定的插件的名称列表

返回类型:

list[str]

get_share(plugin: str, share: str) SyncShare | AsyncShare[源代码]

获取绑定的插件中的共享对象

参数:
  • plugin (str) -- 插件名称

  • share (str) -- 共享对象的标识

返回:

共享对象

返回类型:

SyncShare | AsyncShare

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]]

class melobot.bot.BotLifeSpan[源代码]

基类:Enum

bot 生命周期阶段的枚举

LOADED = 'l'
RELOADED = 'r'
STARTED = 'sta'
CLOSE = 'c'
STOPPED = 'sto'
melobot.bot.get_bot() Bot[源代码]

获得当前上下文中的 bot 对象

返回:

bot 对象

返回类型:

Bot