melobot.bot

bot 类

melobot.bot.thisbot: MeloBot = <melobot.bot.init.BotLocal object>

指向当前 bot 实例的全局变量,运行时使用。使用时当做 bot 实例(MeloBot 对象)使用即可

class melobot.bot.MeloBot[源代码]

bot 类。该类实例化即一个 bot 实例

__init__(name: str) None[源代码]

初始化一个 bot 实例

参数:

name – bot 实例的名字(唯一)

name: str

bot 的名字(唯一)

info: type[MetaInfo]

元信息

logger: BotLogger

bot 的日志器

connector: AbstractConnector

bot 的连接器

init(connector: AbstractConnector, enable_log: bool = True, logger_name: str | None = None, log_level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO', log_to_console: bool = True, log_to_dir: str | None = None, log_tag: bool = False, custom_logger: Any | None = None) MeloBot[源代码]

初始化 bot 实例

参数:
  • connector – 使 bot 实例工作的连接器

  • enable_log – 是否启用日志

  • logger_name – 日志器名称, 为空则使用 bot 实例名字

  • log_level – 日志器日志等级

  • log_to_console – 日志是否输出到控制台

  • log_to_dir – 保存日志文件的目录,为空则不保存

  • log_tag – 是否在日志中输出日志器名称,默认不输出

  • custom_logger – 自定义日志器对象。若不为空将使用该日志器,并忽略所有其他日志相关参数(日志器对象如果不是 BotLogger 类的实例,需要先通过 logger_patch() 修补)

返回:

bot 实例(因此支持链式调用)

load_plugin(target: str | BotPlugin) MeloBot[源代码]

为 bot 实例加载插件

参数:

target – 插件目标,可传入插件对象或插件包(一个插件即是一个 python package)的路径

返回:

bot 实例(因此支持链式调用)

load_plugins(plugins_dir: str) MeloBot[源代码]

为 bot 实例批量加载插件

参数:

plugins_dir – 传入包含所有插件包(一个插件即是一个 python package)的目录

返回:

bot 实例(因此支持链式调用)

run() None[源代码]

运行 bot 实例

async close() None[源代码]

关闭 bot 实例

is_activate() bool[源代码]

判断 bot 实例是否在非 slack 状态

slack 状态启用后仅会禁用行为操作的发送,无其他影响

返回:

是否在非 slack 状态

activate() MeloBot[源代码]

使 bot 实例退出 slack 状态

slack 状态启用后仅会禁用行为操作的发送,无其他影响

返回:

bot 实例(因此支持链式调用)

slack() MeloBot[源代码]

使 bot 实例进入 slack 状态

slack 状态启用后仅会禁用行为操作的发送,无其他影响

返回:

bot 实例(因此支持链式调用)

get_plugins() dict[str, PluginProxy][源代码]

获得 bot 实例所有插件的信息

返回:

所有插件的信息

emit_signal(namespace: str, signal: str, *args: Any, wait: bool = False, **kwargs: Any) Any[源代码]

在本 bot 实例范围内发起一个信号

参数:
  • namespace – 触发信号的命名空间

  • signal – 触发信号的名字

  • wait – 是否等待信号处理方法处理完毕

  • args – 传递给信号处理方法的 args

  • kwargs – 传递给信号处理方法的 kwargs

返回:

不等待信号处理方法处理,只返回 None;若等待则返回运行结果

get_share(namespace: str, id: str) ShareObject[源代码]

获得 bot 实例内的共享对象

参数:
  • namespace – 共享对象的命名空间

  • id – 共享对象的标识 id

返回:

获得到的共享对象

classmethod start(*bots: MeloBot) None[源代码]

同时运行多个 bot 实例

参数:

bots – 要运行的 bot 实例

async classmethod unicast(target: str, namespace: str, signal: str, *args: Any, wait: bool = False, **kwargs: Any) None[源代码]

在指定的 bot 实例范围发起信号,即单播

参数:
  • target – 单播的目标 bot 实例的名字

  • namespace – 信号的命名空间

  • signal – 信号的名字

  • wait – 是否等待信号处理方法处理完毕

  • args – 传递给信号处理方法的 args

  • kwargs – 传递给信号处理方法的 kwargs

async classmethod multicast(targets: list[str] | Literal['ALL'], namespace: str, signal: str, *args: Any, self_exclude: bool = True, wait: bool = False, **kwargs: Any) None[源代码]

在指定的多个 bot 实例范围发起信号,即多播

参数:
  • targets – 多个 bot 实例的名字列表,为 “ALL” 时代表向所有 bot 多播,即广播

  • namespace – 信号的命名空间

  • signal – 信号的名字

  • self_exclude – 是否在多播时排除自己

  • wait – 是否等待信号处理方法处理完毕

  • args – 传递给信号处理方法的 args

  • kwargs – 传递给信号处理方法的 kwargs

classmethod use_default_loop_policy() None[源代码]

使用默认的事件循环策略

在类 Unix 平台上,这会停止 uvloop 的使用

Windows 平台上,这会停止 winloop 的使用