建议使用TRSS原版,此版本为个人自用版,会在任意时间直接进行更改,且不会与TRSS一致
- 转发消息改为渲染成图片,需要安装
ws-plugin #QQBot设置转换开启配合#ws绑定实现互通数据#QQBotDAUand#QQBotDAUproModel/template/groupIncreaseMsg_default.js中自定义入群发送主动消息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: 直接修改
#QQBot调用统计根据e.reply()发送的消息进行统计,每条消息仅统计一次,未做持久化处理,默认关闭,#QQBot设置调用统计开启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个
#QQBot用户统计: 对比昨日的用户数据,默认关闭,#QQBot设置用户统计开启config/QQBot.yaml中使用前台日志消息过滤(自欺欺人大法),将会不在前台打印自定的消息内容,防log刷屏(比如修仙、宝可梦等),也可以使用#QQBot添加/删除过滤日志垃圾机器人- 自定义消息采取完整消息匹配,非关键词匹配
- 非必要不建议开启此项
注意:只会过滤部分QQBot的日志
filterLog: BotQQ: - 垃圾机器人 - 垃圾bot - 垃圾Bot # ...
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中file配置用于控制文件发送链路
file:
enable: true
preferUrlUpload: true
groupBase64Upload: true
privateForceChunk: true
allowForceChunk: true
autoExtractName: true
appendRecallIds: trueenable: 是否启用segment.file(...)文件发送preferUrlUpload: 网络文件优先 URL 直传groupBase64Upload: 群文件优先走 base64 上传privateForceChunk: 私聊默认走分片上传allowForceChunk: 允许segment.file(url, name, true)或对象形式强制分片autoExtractName: 未传文件名时自动从 URL/文件头推断appendRecallIds: 将文件消息 ID 合并进发送返回值,支持统一撤回
- 当前代码已按职责拆分模块
Model/file.js: 文件上传、分片、降级和撤回 ID 回填Model/message.js: 普通消息、Markdown、频道消息的构造与发送Model/session.js: pick 对象、消息映射、好友/群/频道缓存同步Model/event.js: notice/callback 事件分发Model/connector.js: SDK 初始化、bus 代理、事件注册Model/admin.js: 管理命令、帮助、设置与统计入口
permission: master
toQRCode: true
toCallback: true
toBotUpload: true
imageUploadProvider: bot
groupIncreaseMsg: true
oneKeySendGroupMsg: true
hideGuildRecall: false
toQQUin: false
toImg: true
callStats: false
userStats: false
sendButton: true
simplifiedSdkLog: false
markdownImgScale: 1
sep: ""
dauDB: redis
file:
enable: true
preferUrlUpload: true
groupBase64Upload: true
privateForceChunk: true
allowForceChunk: true
autoExtractName: true
appendRecallIds: true
bot:
sandbox: false
maxRetry: 0
timeout: 30000
token:
- "机器人QQ:AppID:Token:AppSecret:1:1"maxRetry: 0在面板里表示无限重连,保存后会转成Infinityfile.appendRecallIds: true建议保持开启,否则文件消息不会并入统一撤回返回值- 如果你使用第三方图床,
toBotUpload仍然需要开启,实际渠道由imageUploadProvider控制
- 准备:TRSS-Yunzai
输入:#安装QQBot-Plugin- 打开:QQ 开放平台 创建 Bot:
① 创建机器人
② 开发设置 → 得到机器人QQ号:AppID:Token:AppSecret - 输入:
#QQBot设置机器人QQ号:AppID:Token:AppSecret:[01]:[01]
- 机器人QQ号
114AppID514Token1919AppSecret810群Bot 频道私域
#QQBot设置114:514:1919:810:1:1
Markdown 消息
R.I.P
- #QQBot账号
- #QQBot设置 +
机器人QQ号:AppID:Token:AppSecret:是否群Bot:是否频道私域(是1 否0) - #QQBotMD +
机器人QQ号:模板ID