标签 NoneBot2 下的文章

Lonely 自己私下里有一个公益站(怕扛不住所以没公开),但是呢… 对于用户(在 qq 群内)留存率有点苦恼,所以想出来了通过 Nonebot2 QQ Adapter 在 QQ 群内认证并遵循 OAuth2.0 标准

先掏源码:
archive.zip

NewAPI 中的配置:

配置

Well-Known URL
<不用填这个 这个目前不支持>
Client ID:
<QQ群ID,Bot只会受理指定群的消息>
Client Secret:
<你oauth_secrets.json中的密钥>
Authorization Endpoint:
https://<domain>/oauth/authorize
Token Endpoint:
https://<domain>/oauth/token
User Info Endpoint:
https://<domain>/oauth/userinfo

使用教程:

  1. 解压
  2. 使用 uv sync 命令同步环境,没有 uv 的请看 uv 官方文档 安装
  3. 配置.env.prod,记得随机生成一个 JWT_SECRET,这个绝对不能给别人!!给了别人就能解码 JWT 了,注意在文件中添加一行 ONEBOT_ACCESS_TOKEN=你的访问令牌,生产环境需要添加
  4. 打开 data 目录,复制文件 oauth_secrets.json.example 为 oauth_secrets.json,并编辑键值对,键是群号,值(列表)是(多个)OAuth 密钥,可以只配置一个
  5. 接下来回到项目根目录,通过 uv run bot.py 运行项目,记得反代为 HTTPS 协议,不然凭据容易被(中间人)盗取
如何接入 QQ 机器人

在服务器安装 Napcat
使用 docker logs <容器名字,默认napcat> 查看容器日志,打开服务器地址:6099/webui,从日志中找到 token 并登录 Napcat 以及登录 Napcat 上的 QQ
接下来添加连接配置,选择客户端 Websocket,地址填写 ws://<服务器地址>:5800/onebot/v11/ws(因为 NGINX 反代不好用,所以连接),密钥填写你在第三步 配置的连接 Token,不是 secret
接下来确保 Napcat 和 Nonebot 启动后,打开你要应用的 QQ 群,发送登录 123456 测试机器人是否有反应,有反应则代表成功


📌 转载信息
转载时间:
2026/1/5 13:00:59

各位佬友好,最近在折腾 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 并给予意见。


📌 转载信息
原作者:
chlorophyimo
转载时间:
2026/1/4 10:08:43