标签 QQ Bot 下的文章

主要基于 NapCat 框架对接的,Python 实现,代码比较粗糙,技术含量也比较低,主要是由于自己看不懂 nonebot 的开发文档,就自己搓了一个(

有佬友喜欢的话可以直接拿来用,有佬友喜欢的话也可以点个星星

下面这个是我自己用的机器人成品

功能特性

  • 心跳检测机器人在线状态
  • 掉线自动发送飞书通知
  • 模块动态加载,无需修改核心代码
  • 群聊 / 私聊功能开关独立控制
  • 支持定时任务
  • 支持自动撤回消息
  • 私聊消息转达到管理员
  • 日志自动记录与清理
  • 提供完整的模块开发模板

相关的开发文档都在 GitHub 仓库中


📌 转载信息
原作者:
W1ndys
转载时间:
2026/1/18 08:51:40

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

最近 QQ 又可以发送系统提示了,如图

还是发送 Pb 包实现的

这是一个来自天如大佬写的 Trss-Yunzai 发送 Pb 包的插件

使用 NapCat + TrssYunzai 使用这个插件,就可以在你的 QQ 里发送系统提示了喵!ww

在任意一个机器人所在群发送 #hz内容就可以得到一个 “内容” 的系统提示 #hz 和内容之间没有空格

由于大佬的版本是需要在发送灰字所在群发送云崽指令,很不美观(骗不到人)

我基于这个版本弄了一个二改版本(
在任意群内发送 #hz 内容 群号可以把灰字发送到指定群内(需要机器人在群)

二改
 import plugin from '../../lib/plugins/plugin.js' export class GreyText extends plugin {
  constructor () {
    super({
      name: '灰字发送',
      dsc: 'Raw PB 灰字(指定群)',
      event: 'message',
      priority: 500,
      rule: [
        {
          reg: '^#hz\\s+(.+?)\\s+(\\d+)$',
          fnc: 'sendGrey'
        }
      ]
    })
  }

  async sendGrey (e) {
    const match = e.msg.match(/^#hz\s+(.+?)\s+(\d+)$/)
    if (!match) return const content = match[1]
    const groupId = Number(match[2])

    /** 灰字 PB(保持原可用结构,仅替换必要字段) */ const packet = {
      25: {
        1: {
          1: 11,
          50: "3573715425",
          20: {
            2: ,
            3: ,
            4: 
          },
          5: 8,
          0: {
            1: 1
          },
          28: {
            1: 2,
            2: content,           
            3: ,
            4: {
              1: "",
              2: 0
            }
          },
          30: 2,
          14: 1
        }
      }
    }
    await Packet.Long(
      {
        ...e,
        group_id: groupId
      },
      packet
    )

    return true
  }
}

请注意,这个版本并没有写鉴权,建议修改触发指令

请合理使用,不要拿来刷屏哦,只要安装模块或者使用 NapCat 还是可以看见发送者的 ww!
坏喵喵


📌 转载信息
原作者:
Q3CC
转载时间:
2026/1/2 12:39:48