Lingchu Bot 文档现已上线 — 快来看看吧!
Lingchu Bot

默认实现

默认实现

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.py8 个远程管理命令(见下文)
menu.py菜单页处理器

生命周期操作

  • 重启协议端 / restart-protocol-endpoint — 请求协议侧重启,并在重新连接后发送确认反馈。

远程管理

remote.py 模块实现了 OneBot V11 独有的 8 个跨群命令:

  1. 远程禁言 / remote-mute
  2. 远程解禁 / remote-unmute
  3. 远程全体禁言 / remote-mute-all
  4. 远程全体解禁 / remote-unmute-all
  5. 远程踢出 / remote-kick(需要黑名单记录)
  6. 远程拉黑 / remote-block
  7. 远程删黑 / remote-unblock
  8. 远程公告 / remote-announcement(版本门控)

群号解析

所有远程命令接受群号或群名称,可以是:

  • int 群号 — 直接使用。
  • 可解析为 intstr — 转换后使用。
  • 不可解析为 intstr — 通过 get_group_list() 模糊匹配:
    1. 精确 group_name 匹配(首个命中)。
    2. 包含关系匹配(group_id in group_name)。
    3. 单个匹配 → 解析成功。
    4. 多个匹配 → 机器人要求提供更精确的名称或群号。
    5. 无匹配 → 机器人报告未找到匹配群聊。

上下文校验

执行远程操作前,机器人会检查:

  1. 机器人是目标群的成员(get_group_list)。
  2. 机器人在目标群具有管理员/群主角色(对大多数命令)。
  3. 目标用户是目标群的成员(对用户定向命令)。
  4. 目标不是机器人自己或命令发送者。

共享辅助

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 角色作为安全措施。

源码参考

参见仓库中的 handle/qq/adapters/onebot11/default/

最后更新于

本页目录