melobot.utils¶
日志器¶
日志器可使用内置的 BotLogger
,也可以使用标准库或第三方的日志器。
运行时通过 thisbot.logger
获取当前 bot 实例的日志器。
- class melobot.utils.BotLogger[源代码]¶
melobot 内置日志器类
- __init__(name: str, level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO', to_console: bool = True, to_dir: str | None = None, no_tag: bool = False) None [源代码]¶
初始化一个日志器实例
- 参数:
name – 日志器的名称(唯一)
level – 日志等级
to_console – 是否输出到 console
to_dir – 保存日志文件的目录,为空则不保存文件
no_tag – 记录日志时是否不标识日志器名称
- setLevel(level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']) None [源代码]¶
设置日志等级
日志等级自动应用于包含的所有 handler
- 参数:
level – 日志等级字面量
- melobot.utils.logger_patch(logger: Any, log_level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO') None [源代码]¶
修复任何非
BotLogger
类型的日志器,使其可以被用于 bot 实例初始化注意
非
BotLogger
类型的日志器,不使用该方法打补丁,无法被用于 bot 实例。但如果不用于 bot 实例,可以不打补丁。如果日志器的日志等级是可变的,请在更新后再次使用该方法修补
- 参数:
logger – 任意日志器对象(支持 debug, info, warning, error, critical 方法即可)
log_level – 日志器此时可以输出的最小日志等级(”DEBUG” 一端为小,”CRITICAL” 一端为大)
匹配器¶
匹配器被用于消息事件预处理的文本匹配过程。
相关知识
对于消息事件来说,预处理过程主要分为两步:匹配或解析、检查。
但对于其他事件来说,预处理过程只有一步:检查。
- class melobot.utils.StartMatcher[源代码]¶
基类:
BotMatcher
字符串起始匹配器
- class melobot.utils.ContainMatcher[源代码]¶
基类:
BotMatcher
字符串包含匹配器
- class melobot.utils.EndMatcher[源代码]¶
基类:
BotMatcher
字符串结尾匹配器
- class melobot.utils.FullMatcher[源代码]¶
基类:
BotMatcher
字符串全匹配器
检查器¶
检查器被用于所有事件预处理的事件检查过程。
相关知识
对于消息事件来说,预处理过程主要分为两步:匹配或解析、检查。
但对于其他事件来说,预处理过程只有一步:检查。
- class melobot.utils.MsgLvlChecker[源代码]¶
-
消息事件分级权限检查器
主要分 主人、超级用户、白名单用户、普通用户、黑名单用户 五级
- __init__(level: User, owner: int | None = None, super_users: list[int] | None = None, white_users: list[int] | None = None, black_users: list[int] | None = None, ok_cb: Callable[[], Awaitable[None]] | None = None, fail_cb: Callable[[], Awaitable[None]] | None = None) None [源代码]¶
初始化一个消息事件分级权限检查器
- 参数:
level – 允许的等级(>= 此等级才能通过校验)
owner – 主人的 qq 号
super_users – 超级用户 qq 号列表
white_users – 白名单用户 qq 号列表
black_users – 黑名单用户 qq 号列表
ok_cb – 检查通过的回调
fail_cb – 检查不通过的回调
- class melobot.utils.GroupMsgLvlChecker[源代码]¶
-
群聊消息事件分级权限检查器
基本功能与
MsgLvlChecker
一致。但增加了白名单机制, 不提供 white_groups 参数默认拒绝所有群聊消息事件。对所有私聊消息事件校验不通过。
- __init__(level: User, owner: int | None = None, super_users: list[int] | None = None, white_users: list[int] | None = None, black_users: list[int] | None = None, white_groups: list[int] | None = None, ok_cb: Callable[[], Awaitable[None]] | None = None, fail_cb: Callable[[], Awaitable[None]] | None = None) None [源代码]¶
初始化一个群聊消息事件分级权限检查器
- 参数:
level – 允许的等级(>= 此等级才能通过校验)
owner – 主人的 qq 号
super_users – 超级用户 qq 号列表
white_users – 白名单用户 qq 号列表
black_users – 黑名单用户 qq 号列表
white_groups – 白名单群号列表(不在其中的群不通过校验)
ok_cb – 检查通过的回调
fail_cb – 检查不通过的回调
- class melobot.utils.PrivateMsgLvlChecker[源代码]¶
-
私聊消息事件分级权限检查器
基本功能与
MsgLvlChecker
一致。对所有群聊消息事件校验不通过。
- __init__(level: User, owner: int | None = None, super_users: list[int] | None = None, white_users: list[int] | None = None, black_users: list[int] | None = None, ok_cb: Callable[[], Awaitable[None]] | None = None, fail_cb: Callable[[], Awaitable[None]] | None = None) None [源代码]¶
初始化一个私聊消息事件分级权限检查器
- 参数:
level – 允许的等级(>= 此等级才能通过校验)
owner – 主人的 qq 号
super_users – 超级用户 qq 号列表
white_users – 白名单用户 qq 号列表
black_users – 黑名单用户 qq 号列表
ok_cb – 检查通过的回调
fail_cb – 检查不通过的回调
- class melobot.utils.MsgCheckerFactory[源代码]¶
消息事件分级权限检查器的工厂
预先存储检查依据(各等级数据),指定检查等级后,可返回一个
MsgLvlChecker
类的对象- __init__(owner: int | None = None, super_users: list[int] | None = None, white_users: list[int] | None = None, black_users: list[int] | None = None, white_groups: list[int] | None = None, ok_cb: Callable[[], Awaitable[None]] | None = None, fail_cb: Callable[[], Awaitable[None]] | None = None) None [源代码]¶
初始化一个消息事件分级权限检查器的工厂
- 参数:
owner – 主人的 qq 号
super_users – 超级用户 qq 号列表
white_users – 白名单用户 qq 号列表
black_users – 黑名单用户 qq 号列表
white_groups – 白名单群号列表(不在其中的群不通过校验)
ok_cb – 检查通过的回调(这将自动附加到生成的检查器上)
fail_cb – 检查不通过的回调(这将自动附加到生成的检查器上)
- get_base(level: User = User.USER, ok_cb: Callable[[], Awaitable[None]] | None = None, fail_cb: Callable[[], Awaitable[None]] | None = None) MsgLvlChecker [源代码]¶
根据内部依据和给定等级,生成一个
MsgLvlChecker
对象- 参数:
level – 允许的等级(>= 此等级才能通过校验)
ok_cb – 检查通过的回调
fail_cb – 检查不通过的回调
- 返回:
消息事件分级权限检查器
解析器¶
解析器被用于消息事件预处理的参数解析。
相关知识
对于消息事件来说,预处理过程主要分为两步:匹配或解析、检查。
但对于其他事件来说,预处理过程只有一步:检查。
- class melobot.utils.CmdParser[源代码]¶
基类:
BotParser
命令解析器
通过解析命令名和命令参数的形式,解析字符串。
- __init__(cmd_start: str | list[str], cmd_sep: str | list[str], targets: str | list[str], formatters: list[CmdArgFormatter | None] | None = None) None [源代码]¶
初始化一个命令解析器
注意
命令起始符和命令间隔符不允许包含:引号,各种括号,反斜杠,数字,英文,控制字符及各类空白字符。
命令起始符不能是命令间隔符的子序列,反之亦然。
- 参数:
cmd_start – 命令起始符(可以是字符串或字符串列表)
cmd_sep – 命令间隔符(可以是字符串或字符串列表)
targets – 匹配的命令名
formatters – 格式化器列表(列表可以包含空值,即此位置的参数无格式化)
- class melobot.utils.CmdParserFactory[源代码]¶
命令解析器的工厂
预先存储命令起始符和命令间隔符,指定匹配的命令名后返回一个命令解析器。
- class melobot.utils.CmdArgFormatter[源代码]¶
命令参数格式化器
用于格式化命令解析器解析出的命令参数。搭配命令解析器
CmdParser
使用- __init__(convert: Callable[[str], Any] | None = None, verify: Callable[[Any], bool] | None = None, src_desc: str | None = None, src_expect: str | None = None, default: Any = Void, default_replace_flag: str | None = None, convert_fail: Callable[[FormatInfo], Awaitable[None]] | None = None, verify_fail: Callable[[FormatInfo], Awaitable[None]] | None = None, arg_lack: Callable[[FormatInfo], Awaitable[None]] | None = None) None [源代码]¶
初始化一个命令参数格式化器