@zaofan/dsh-qqbot 1.5.7 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -0
- package/client/qqbot-settings.js +5 -0
- package/client/qqbot-settings.js.bak-ga-041943 +4775 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -1
- package/dist/config.js.map +1 -1
- package/dist/features/image-path-cache.d.ts.map +1 -1
- package/dist/features/image-path-cache.js +28 -2
- package/dist/features/image-path-cache.js.map +1 -1
- package/dist/features/image-url-ledger.d.ts.map +1 -1
- package/dist/features/image-url-ledger.js +24 -5
- package/dist/features/image-url-ledger.js.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -26
- package/dist/index.js.map +1 -1
- package/dist/transport/inbound.d.ts.map +1 -1
- package/dist/transport/inbound.js +38 -1
- package/dist/transport/inbound.js.map +1 -1
- package/package.json +1 -1
- package/settings-host.js +308 -33
package/README.md
CHANGED
|
@@ -241,3 +241,70 @@ dsh: disabling profile plugin row "mcp-chrome": Plugin ... is incompatible with
|
|
|
241
241
|
## License
|
|
242
242
|
|
|
243
243
|
[MIT](./LICENSE)
|
|
244
|
+
|
|
245
|
+
### Q: 升级到 dsh 0.1.7 后,我以前设置的群守则(groupPrompt)不见了?
|
|
246
|
+
|
|
247
|
+
**A:这是 0.1.7 一次性导入设置时的已知坑,内容没丢,可以找回。**
|
|
248
|
+
|
|
249
|
+
0.1.7 会把旧的 `~/.dsh/settings.yaml` 整体导入 profile,但导入**不一定落到 entry config 里**;
|
|
250
|
+
插件的设置页读不到自定义值 → 拿到默认值 → 保存时把默认值写回 → 你的自定义内容就被顶掉了。
|
|
251
|
+
|
|
252
|
+
**找回步骤**:
|
|
253
|
+
1. 打开 `~/.dsh/settings.yaml.imported`(宿主留档的原件,同目录通常还有 `.bak`)
|
|
254
|
+
2. 找到你实例对应的 section(例如 `im-qqbot-2:`),再往下找 `groupPrompt:` 那一行
|
|
255
|
+
3. 复制它的内容(`|-` 或 `>-` 块标量,注意去掉块缩进)
|
|
256
|
+
4. 回到 Web 设置页的「群聊常驻守则」,粘贴回去并**保存**
|
|
257
|
+
— 1.5.8 起设置保存在插件自有存储(`~/.dsh/qqbot-settings/<实例>.json`),不会再丢
|
|
258
|
+
|
|
259
|
+
> ⚠️ **群守则里常含私人信息**(主人 openid、进群暗号等)。**发布、分享配置或截图时请务必剔除 `groupPrompt`。**
|
|
260
|
+
|
|
261
|
+
### Q: 设置页保存后,为什么 patch 里看不到我的改动?
|
|
262
|
+
|
|
263
|
+
**A:1.5.8 起,设置页保存写在插件自有存储,**故意不写** `cordis.patch.yml`。**
|
|
264
|
+
|
|
265
|
+
- 位置:`~/.dsh/qqbot-settings/<实例名>.json`(例如 `im-qqbot-2.json`)
|
|
266
|
+
- 为什么不写 patch:写 patch 会触发宿主热更新 → 插件重新 apply → 若此时凭据无效又会写配置,
|
|
267
|
+
**形成死循环**(实测把 dsh 启动刷死);而且手拼 YAML 保不住字段类型、也不支持新增键。
|
|
268
|
+
- 生效优先级:**自有存储覆盖 patch**。所以两份不一致时,以自有存储为准。
|
|
269
|
+
|
|
270
|
+
### Q: 面板上「实时入群事件」开关是干什么的?打开后机器人连不上了?
|
|
271
|
+
|
|
272
|
+
**A:它订阅 `GROUP_JOIN_REQUEST`(群成员事件,intent `1<<24`),需要 QQ 开放平台**先开通**该事件。**
|
|
273
|
+
|
|
274
|
+
未开通时打开会导致**机器人连不上**(网关拒绝 Identify,close `4914`/`4915`)。
|
|
275
|
+
正确顺序:**① 平台开通事件 → ② 打开开关 → ③ 重启**。
|
|
276
|
+
|
|
277
|
+
**只想收通知、不想折腾平台?** 用「轮询审批」即可(不需要任何事件授权):
|
|
278
|
+
- 勾「轮询审批」= 定时拉取各群审批列表
|
|
279
|
+
- 再按需勾「唤醒AI」/「注入群管会话」/「通知普通群」决定拿到申请后做什么
|
|
280
|
+
- ⚠️ 注意:`唤醒AI` 与 `注入群管会话` **互斥且唤醒优先** —— 两个都勾时只会唤醒 AI,不会注入会话。
|
|
281
|
+
想要「静默注入群管会话」就**只勾「注入群管会话」**。
|
|
282
|
+
|
|
283
|
+
### Q: 为什么自有存储里不要出现空对象(`{}`)?
|
|
284
|
+
|
|
285
|
+
**A:空对象会把 patch 里的整块配置顶掉,导致依赖它的功能静默失效。**
|
|
286
|
+
|
|
287
|
+
插件读取配置时会把「自有存储」(`~/.dsh/qqbot-settings/<实例>.json`) 与 profile 的 patch 合并。
|
|
288
|
+
如果自有存储里某个字段是**空对象**,浅合并会把 patch 里该字段的**整块配置顶掉**。
|
|
289
|
+
|
|
290
|
+
**真实案例**:`sticker: {}` 让 `config.sticker.collectEnabled` 变成 `undefined`
|
|
291
|
+
→ **图片自动下载停摆**(现象:最后一张自动下载的图停在某个时刻,之后入站图片只剩 QQ 长 URL)。
|
|
292
|
+
|
|
293
|
+
1.5.9 起已改为**递归合并**(空对象不再覆盖),但如果你手动编辑过那份 JSON:
|
|
294
|
+
- **想恢复默认**:直接**删掉该字段**,不要写 `{}`
|
|
295
|
+
- 只写你**真正改过**的键
|
|
296
|
+
|
|
297
|
+
### Q: 升级后我自定义的配置(群守则 / 注入规则 / 互动事件)被默认值顶掉了,能找回吗?
|
|
298
|
+
|
|
299
|
+
**A:能。宿主把旧的 `settings.yaml` 留档了。**
|
|
300
|
+
|
|
301
|
+
0.1.7 会把 `~/.dsh/settings.yaml` 一次性导入 profile,但**导入不一定落到 entry config 里**;
|
|
302
|
+
插件读不到自定义值时就会用默认值回写,把你的配置顶掉。
|
|
303
|
+
|
|
304
|
+
**找回步骤**:
|
|
305
|
+
1. 打开 `~/.dsh/settings.yaml.imported`(同目录通常还有 `.bak`)
|
|
306
|
+
2. 找到你实例的 section(如 `im-qqbot-2:`),再找对应字段(`groupPrompt:` / `injectRules:` / `botplayEvents:` …)
|
|
307
|
+
3. 复制内容,回到 Web 设置页粘回去并保存
|
|
308
|
+
(1.5.9 起配置存在插件自有存储,不会再被默认值覆盖)
|
|
309
|
+
|
|
310
|
+
> ⚠️ 群守则里常含私人信息(主人 openid、进群暗号等),**发布/分享/截图时记得剔除**。
|
package/client/qqbot-settings.js
CHANGED
|
@@ -2703,6 +2703,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2703
2703
|
return isNaN(v) || v < 1 ? dft : v
|
|
2704
2704
|
}
|
|
2705
2705
|
state.gaEnabled = read('#dk-ga-enabled')
|
|
2706
|
+
state.gaWatch = read('#dk-ga-watch')
|
|
2706
2707
|
state.gaPoll = read('#dk-ga-poll')
|
|
2707
2708
|
state.gaPollWake = read('#dk-ga-pollwake')
|
|
2708
2709
|
state.gaHubNotify = read('#dk-ga-hubnotify')
|
|
@@ -2737,6 +2738,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2737
2738
|
// ⚙ 群组设置: 载入轮询/开关当前值
|
|
2738
2739
|
var poll = ga.pollJoinRequests || {}
|
|
2739
2740
|
state.gaEnabled = ga.enabled === true
|
|
2741
|
+
state.gaWatch = ga.watchJoinRequests === true // 实时入群事件(需平台开通,重启生效)
|
|
2740
2742
|
state.gaPoll = poll.enabled === true
|
|
2741
2743
|
state.gaPollWake = poll.wakeLlm !== false
|
|
2742
2744
|
state.gaHubNotify = poll.hubNotify !== false
|
|
@@ -2745,6 +2747,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2745
2747
|
state.gaInterval = poll.intervalMin || 5
|
|
2746
2748
|
state.gaMinCount = poll.minCount || 1
|
|
2747
2749
|
var e1 = panel && panel.querySelector('#dk-ga-enabled'); if (e1) e1.checked = state.gaEnabled
|
|
2750
|
+
var ew = panel && panel.querySelector('#dk-ga-watch'); if (ew) ew.checked = state.gaWatch
|
|
2748
2751
|
var e2 = panel && panel.querySelector('#dk-ga-poll'); if (e2) e2.checked = state.gaPoll
|
|
2749
2752
|
var e3 = panel && panel.querySelector('#dk-ga-pollwake'); if (e3) e3.checked = state.gaPollWake
|
|
2750
2753
|
var e4 = panel && panel.querySelector('#dk-ga-hubnotify'); if (e4) e4.checked = state.gaHubNotify
|
|
@@ -2766,6 +2769,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2766
2769
|
var patch = Object.assign({}, cur || {})
|
|
2767
2770
|
var ga = Object.assign({}, (cur && cur.groupAdmin) || {}, {
|
|
2768
2771
|
enabled: state.gaEnabled,
|
|
2772
|
+
watchJoinRequests: state.gaWatch === true,
|
|
2769
2773
|
pollJoinRequests: {
|
|
2770
2774
|
enabled: state.gaPoll,
|
|
2771
2775
|
intervalMin: state.gaInterval,
|
|
@@ -3452,6 +3456,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
3452
3456
|
+ '<span class="dk-msg" style="flex:1" id="dk-ga-hint"></span></div>'
|
|
3453
3457
|
+ '<div class="dk-row" style="gap:8px;flex-wrap:wrap">'
|
|
3454
3458
|
+ '<label style="display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-size:12px"><input type="checkbox" id="dk-ga-enabled"' + (state.gaEnabled ? ' checked' : '') + '> 群管理</label>'
|
|
3459
|
+
+ '<label style="display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-size:12px" title="实时接收入群申请事件(GROUP_JOIN_REQUEST);需先在 QQ 开放平台开通该事件,否则机器人会连不上;打开后需重启生效"><input type="checkbox" id="dk-ga-watch"' + (state.gaWatch ? ' checked' : '') + '>实时入群事件(需平台开通·重启生效)</label>'
|
|
3455
3460
|
+ '<label style="display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-size:12px"><input type="checkbox" id="dk-ga-poll"' + (state.gaPoll ? ' checked' : '') + '> 轮询审批</label>'
|
|
3456
3461
|
+ '<label style="display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-size:12px"><input type="checkbox" id="dk-ga-pollwake"' + (state.gaPollWake ? ' checked' : '') + '> 唤醒AI</label>'
|
|
3457
3462
|
+ '<label style="display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-size:12px"><input type="checkbox" id="dk-ga-hubnotify"' + (state.gaHubNotify ? ' checked' : '') + '> 注入群管会话</label>'
|