koishi-plugin-qq-group-manager:一个综合且轻量化的qq群管插件、带有多重违禁词审核、支持ai回复与图像识别

npm
前排提醒 本插件是vibe coding制作的
这是一个基于koishi的qqbot插件,我本人主要使用napcat,已在群内稳定使用一个月,现发布第一个相对稳定的版本。

写它的起因是我想要一个“不用数据库” 的群管方案。所以它的全部状态都是 Koishi 数据目录下的 Markdown 文件,用控制台自带的「探索器 Explorer」就能查看和手改,也能直接备份或丢进 git 管理。

功能展示与几个使用案例

违禁词功能

违禁词不是"包含即触发",而是给整条消息打分


bannedWords: ["加群|30", "私聊|40", "福利|50"]

bannedWordScoreThreshold: 70

每个词可以单独配分值,整条消息累计到阈值才处理——这样「别加群了」和「快来加群」不会得到同一个结果,而不是一刀切。

判定顺序分三级:强关键词 → 白名单 → 普通违禁词。其中强关键词命中即触发、且无视白名单豁免,专门用来堵"违禁句后面接一个白名单词就能绕过管控"的口子。

入群审核:管理员发一句话就行

新申请会推送到群里并带一个 6 位编号,管理员直接发文本处理:


approve 000123 认识

reject 000123 疑似小号

编号可省略,省略时取本群最近一条待审。待审单会落盘,重启不丢。

记忆库 + AI 回复


[memory] 群主最讨厌别人问"在吗"

存进 Memory.md,开启后 AI 回复会检索并引用相关记忆——群规和老梗可以直接喂给它。

AI 回复这块我做了三道闸门逐层收敛:消息阈值 → 随机概率 → 兴趣评分。任何一道没过都不回复、也不调用模型,所以它既不刷屏也不烧钱。消息里 @点名 或命中 bot 自称时可以越过全部闸门。

兴趣判定还能单独指定一个便宜的非推理模型,因为它本质上只是二分类任务。

群管动作


[mute] 123456 10m 刷屏

[mute] @某人 1h 引战

[kick] 123456 屡次违规

时长支持 10 / 10m / 1h / 1d / 1w,上限 30 天。权限采用两步鉴权:先校验操作者身份(白名单 / 群主 / 群管理员),再校验 bot 在该群的执行能力,两步都过才放行。

权限这块我踩过坑:早先版本只校验了「bot 是不是群主」,却没校验「谁在操作」,等于给越权留了口子。现在补齐成两步鉴权,并补了 17 项单元测试覆盖各角色判定矩阵和越权场景。

安装


npm i @nestim/koishi-plugin-qq-group-manager

或在 Koishi 控制台「插件市场」搜索 qq-group-manager 安装。

依赖 koishi >= 4.18.7,需要 OneBot 实现(NapCat / LLOneBot 等)提供

setGroupBan / setGroupKick / getGroupMemberInfo。不需要数据库。

已知限制

写清楚免得踩坑:

  • 没有 WebUI,所有配置都在 Koishi 控制台里

  • 不用数据库是刻意的取舍:换来零部署、可读可改可备份,代价是数据量很大时不如数据库高效

  • AI 回复默认关闭,需要自己配模型和 API

  • 只在 NapCat 上实测过,其他 OneBot 实现理论上兼容但我没验证

完整文档

功能清单、全部指令、配置项说明、数据文件格式都在 GitHub 和 npm 上,这里就不重复贴了:

有问题回帖或者开 issue 都可以,看到会回。


1 个赞

cool

1 个赞

awa 我其实好奇目前的官bot接口能做到 直接把这个插件迁移到官bot吗:thinking:

1 个赞

魔改一下确实可以,不过ai回复的主动性可能会大打折扣,官bot的频率我用下来并不是很高

1 个赞