此版本基于叶的自用版修改,会在任意时间直接进行更改,且不会与上游一致
班级群: 1057604000
自己部署webhook转发服务
使用TS霆生のwebhook转发服务(免费)
- QQ机器人后台回调配置链接:
https://bot.191800.xyz/webhook?secret={secret},{secret}替换为bot secret - 插件ws连接配置:
wss://bot.191800.xyz/ws/{secret},{secret}替换为bot secret
- 自定义ws接收地址,在
config/QQBot.yaml中添加以下配置项,BotQQ改为机器人QQ号WsUrl: BotQQ: ws://... BotQQ: ws://...
Model/template/groupIncreaseMsg_default.js中自定义入群发送主动消息#QQBotDAU/#QQBotDAUpro#QQBot调用统计根据e.reply()发送的消息进行统计,每条消息仅统计一次,未做持久化处理,默认关闭,#QQBot设置调用统计开启#QQBot用户统计: 对比昨日的用户数据,默认关闭,#QQBot设置用户统计开启config/QQBot.yaml中使用以下自定义模版,如果设置了全局md会优先使用自定义模版,配合e.toQQBotMD = true将特定消息转换成md,亦可在全局md模式下通过e.toQQBotMD = false将特定消息不转换成md- 方法1: 直接修改
config/QQBot.yaml(推荐)customMD: BotQQ: custom_template_id: 模版id keys: - key1 # 对应的模版key名字 - key2 # ... 最多10个
- 方法2: 在
Model/template目录下新建markdownTemplate.js文件,写入以下内容 (不推荐)// params为数组,每一项为{key:string,values: ['\u200B']} // values固定为['\u200B'] export defalut { custom_template_id: '', params: [] }
- 方法1: 直接修改
config/QQBot.yaml中使用以下配置项,在全局MD时会以MD的模式自动加入params中mdSuffix: BotQQ: - key: key1 values: - value # 如果用到了key则不会添加 - key: key2 values: # \ 需转义 \\ - "{{ e.msg.replace(/^#/g, '\\/') }}" # {{}}中为动态参数,会在发送时替换成对应值,目前仅有e可用,也可以传入js表达式等等 # ...
config/QQBot.yaml中使用以下配置项,在全局MD时会以button的模式自动加入按钮指定行数并独占一行,当超过5排按钮时不会添加btnSuffix: BotQQ: position: 1 # 位置:第几行 1 - 5 values: - text: test callback: test show: # 达成什么条件才会显示 type: random # 目前仅支持 random data: 50 # 0-100 - text: test2 input: test2 # ... 最多10个
config/QQBot.yaml中使用前台日志消息过滤,将会不在前台打印自定的消息内容,防log刷屏- 自定义消息采取完整消息匹配,非关键词匹配
- 非必要不建议开启此项
注意:只会过滤部分QQBot的日志
filterLog: BotQQ: - 垃圾机器人 # ...
config/QQBot.yaml中simplifiedSdkLog是否简化sdk日志,若设置为true则不会打印recv from Group(xxx): xxx,并且会简化发送为send to Group(xxx): <markdown><button>#QQBot一键群发: 需要先配置模版template/oneKeySendGroupMsg_default.jsconfig/QQBot.yaml中markdownImgScale: 1是否对markdown中的图片进行等比例缩放,0.5为缩小50%,1.5为放大50%,以此类推config/QQBot.yaml中sendButton: true未开启全局MD时是否单独发送按钮config/QQBot.yaml中dauDB: level选择存储dau数据的数据库,可选:level,redis,以及false关闭dau统计(仅每日发言用户和群)level- 优点: 统计了大部分数据
- 缺点: 缓存存一份,level存一份
redis- 优点: 大部分使用redis存储,不会缓存
- 缺点: 没有缓存所以有些没统计
- 已适配YePanel,提供dau统计和设置功能
config/QQBot.yaml中bus是否使用ws中转站
- 使用ws中转站可以降低成本,只需要一台低性能云服务器即可通过IP白名单验证,后端可使用本地服务器
- 填写格式:
bus: {
BotQQ: "example.com"
}
- 后端搭建[QQBotWs]
config/QQBot.yaml中forceSilk: true强制将语音转为silk格式再发送config/QQBot.yaml中markdown.prefix/markdown.suffix为原生MD消息注入固定前后缀文本,markdown.affixMode控制注入策略prefix: 在所有原生MD内容前插入的文本(如"【Bot】")suffix: 在所有原生MD内容后插入的文本(如"\n---\nPowered by QQBot")affixMode: 可选smart(默认)或allsmart: 仅在内容包含多行、图片、按钮、显式markdown或node元素时注入all: 所有raw markdown消息均注入
markdown: template: abcdefghij prefix: '【Bot】\n' # 前缀(需用单引号包裹转义符) suffix: '\n---' # 后缀 affixMode: smart # smart(默认) | all
QR扫码登录
支持通过扫码授权的方式登录,适用于没有AppSecret的场景。
群成员增减事件
member.increase/member.decrease事件通知- 入群自动发送欢迎模板消息
- 支持自定义
Model/template/groupIncreaseMsg.js模板
其他新增配置
hideGuildRecall: false— 撤回频道消息是否隐藏smallbtn: false— 启用小按钮(font_size: small)filter_bot_msg: false— 过滤其他bot消息filter_only_at_other_bot: false— 过滤纯@其他bot的消息rawButton: {}— 逐bot切换原生按钮/文字回退stream: false— 流式消息发送(长文本分段)mdSuffix/btnSuffix配置(见上方第6、7点)
模块化结构
index.js # 入口(32行)
components/
├── adapter.js # 引擎类 + install
├── connection.js # WebSocket连接 + intents
├── message-event.js # 事件处理
├── message-sender.js # 消息发送
├── message-builder.js # 消息构建
├── file.js # 文件上传/撤回
├── picker.js # 对象获取
├── recall.js # 召回系统
├── button.js # 按钮
├── image.js # 图片
├── claw.js # 龙虾配置
└── config.js # 配置助手
model/
├── sdkEnhancer.js # SDK增强
├── config.js # YAML配置
├── dau.js # DAU统计
└── inviteStore.js # 邀请存储
- 准备:TRSS-Yunzai
- 在云崽根目录/plugins 下打开终端运行命令:
git clone https://github.com/ZY-Zone/QQBot-Plugin.git - 打开QQBot-Plugin,执行依赖安装命令:
pnpm i - 打开:QQ 开放平台 创建 Bot:
① 创建机器人
② 开发设置 → 得到机器人QQ号:AppID:Token:AppSecret - 输入:
#QQBot设置机器人QQ号:AppID:Token:AppSecret:[01]:[01]
- 机器人QQ号
114AppID514Token1919AppSecret810群Bot 频道私域
#QQBot设置114:514:1919:810:1:1
- WebHook
#QQBot设置114:514:1919:810:2
需要启用公网 HTTPS,开放平台添加 {url}/QQBot
- 扫码登录(无需AppSecret)
#QQBot登录114:1:1
#QQBot登录114:2 # WebHook模式
扫码授权的方式会重置密钥,请注意保存新的密钥
- MD消息模式:使用内置图床发送图片
- 切换普通消息,输入
#QQBotMD机器人QQ号:legacy
#QQBot账号— 查看已连接账号列表#QQBot设置114:514:1919:810:1:1— 添加/删除账号(机器人QQ号:AppID:Token:AppSecret:群Bot:频道私域)#QQBot登录114:1:1— 扫码授权登录(机器人QQ号:群Bot:频道私域)
#QQBotMD114:raw— 原生MD消息(支持按钮)#QQBotMD114:legacy— 普通消息模式#QQBotMD114:1909831031_980983013— 设置Markdown模板ID#QQBot图片限制3— 限制图片大小(MB)
#QQBot设置二维码 开启/关闭— 链接转二维码#QQBot设置按钮回调 开启/关闭— 按钮回调模式#QQBot设置转换 开启/关闭— QQ号转UID(需ws-plugin)#QQBot设置转图片 开启/关闭— 转发转图片(需ws-plugin)#QQBot设置调用统计 开启/关闭#QQBot设置用户统计 开启/关闭#QQBot设置文字链 开启/关闭— 按钮转文字链#QQBot设置机器人消息过滤 开启/关闭#开启bot消息过滤/#关闭bot消息过滤
#QQBotDAU/#QQBotDAUpro— 日活跃统计#QQBot调用统计— 按reply统计#QQBot用户统计— 对比昨日用户数据
#QQBot刷新config— 刷新配置文件#QQBot添加/删除过滤日志xxx— 过滤前台日志#QQBot一键群发— 群发消息(需配置模板)#QQBot帮助— 帮助菜单
| 项目 | 作者 | 仓库地址 |
|---|---|---|
| TRSS原版(时雨) | TimeRainStarSky | Gitee |
| windtrace(风) | wind-trace | Gitee |
| IKUN | ikun25000 | Gitee |
| TS霆生 | ts-yf | Gitee |
| 小丞 | A-Kevin1217 | GitHub |
| 叶 | XasYer | GitHub |