[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更
各位佬友好,最近在折腾 NoneBot2 机器人的时候,发现有时候 LLM 或者其他插件可能会输出一些不该说的 “违禁词”,导致账号风控或者刷屏炸群。 为了解决这个问题,我先找了插件商店但是没有类似的词汇黑名单插件,我弄了一个主动审查插件 nonebot-plugin-word-censor,主要用于拦截机器人发出的消息。
项目地址 Github: https://github.com/ChlorophyTeio/nonebot-plugin-word-censor
目前插件已经上传并申请发布,商店发布检查结果已经通过。
安装插件后,机器人的处理将变为:收到 QQ 消息 → Nonebot 其他插件 → nonebot-plugin-word-censor → 发送 QQ 消息。
测试效果如图
原理主要是利用了 NoneBot 的 Bot.call_api 钩子机制。在 API 调用前,检查 data['message'] 字段。如果命中黑名单,则直接 Raise 一个 Mock 异常,欺骗上层调用者 “API 调用已完成” 或者直接中断,从而阻止请求发送到 OneBot 端。
这个审查插件比较简陋,后续会不断优化它,欢迎佬友们提 Issue 并给予意见。
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更1](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100836_6959cba419e07.png!mark)
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更2](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100838_6959cba6d6ee6.png!mark)
![[开源分享] NoneBot2 敏感词拦截插件:支持正则、实时热更3](https://xiaohack.oss-cn-zhangjiakou.aliyuncs.com/typecho/images/2026/01/04/20260104100840_6959cba8e61ef.png!mark)