默认实现
默认实现
default 包含只依赖 OneBot V11 标准 API 接口的处理器。这些处理器可以在任何 OneBot V11 实现(NapCat、Lagrange 等)上运行,无需实现专属扩展。
可用命令
QQ 命令 中列出的所有命令在默认实现中都可用,除了:
发送群公告/send-announcement— 受实现版本门控(见 NapCat)设置群头像/set-group-avatar— 受实现版本门控(见 NapCat)远程公告/remote-announcement— 受实现版本门控
处理器模块
| 模块 | 命令 |
|---|---|
mute.py | 禁言、解禁、全员禁言、全体解禁、撤回 |
member.py | 踢出群成员、设置群名片、设置群头衔、设置群管理员、取消群管理员 |
block.py | 拉黑、全局拉黑、删黑、全局删黑、清空黑名单、全局清空黑名单 |
protect.py | 拉白、全局拉白、删白、全局删白 |
profile.py | 设置群名称、设置群头像(仅 NapCat) |
announcement.py | 发送群公告(版本门控) |
lifecycle.py | 机器人生命周期钩子;重启协议端 / restart-protocol-endpoint |
remote.py | 8 个远程管理命令(见下文) |
menu.py | 菜单页处理器 |
生命周期操作
重启协议端/restart-protocol-endpoint— 请求协议侧重启,并在重新连接后发送确认反馈。
远程管理
remote.py 模块实现了 OneBot V11 独有的 8 个跨群命令:
远程禁言/remote-mute远程解禁/remote-unmute远程全体禁言/remote-mute-all远程全体解禁/remote-unmute-all远程踢出/remote-kick(需要黑名单记录)远程拉黑/remote-block远程删黑/remote-unblock远程公告/remote-announcement(版本门控)
群号解析
所有远程命令接受群号或群名称,可以是:
int群号 — 直接使用。- 可解析为
int的str— 转换后使用。 - 不可解析为
int的str— 通过get_group_list()模糊匹配:- 精确
group_name匹配(首个命中)。 - 包含关系匹配(
group_id in group_name)。 - 单个匹配 → 解析成功。
- 多个匹配 → 机器人要求提供更精确的名称或群号。
- 无匹配 → 机器人报告未找到匹配群聊。
- 精确
上下文校验
执行远程操作前,机器人会检查:
- 机器人是目标群的成员(
get_group_list)。 - 机器人在目标群具有管理员/群主角色(对大多数命令)。
- 目标用户是目标群的成员(对用户定向命令)。
- 目标不是机器人自己或命令发送者。
共享辅助
mute.py 中的撤回命令只依赖 OneBot V11 标准 API:先用 get_msg 校验存储的消息 ID,再调用 delete_msg 撤回。
common.py 提供:
resolve_user_onebot11(user, bot, event)— 把At | int解析为(user_id, name)元组。输入无效时抛出ValueError。check_target_privilege(bot, event, target_user_id, cmd_matcher)— 先检查受保护目标,仅允许仓库内SUPERUSERS绕过白名单保护;随后检查管理员/群主目标是否可由操作者管理。检查通过返回True。check_bot_privilege(bot, group_id, cmd_matcher)— 检查机器人在指定群内是否具有管理员/群主角色。检查通过返回True。CommandAudit(action, target_user_id=None, reason=None, duration=None, group_id=None)— 承载命令审计载荷。record_command_audit(bot, event, CommandAudit(...))/record_audit_fire_and_forget(bot, event, CommandAudit(...))— 通过消息存储仓库写入命令级审计日志,可直接等待执行,也可作为后台任务调度。
权限 API 集成
权限系统集成了 OneBot V11 get_group_member_info API 以主动验证用户角色。当 event.sender.role 缺失时,系统调用 bot.call_api('get_group_member_info', group_id=..., user_id=...) 获取用户实际角色。如果 API 调用失败,系统会降级为 member 角色作为安全措施。
源码参考
最后更新于