@zaofan/dsh-qqbot 1.7.4 → 1.7.6
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/client/qqbot-settings.js +24 -5
- package/dist/channel-tools.d.ts.map +1 -1
- package/dist/channel-tools.js +12 -4
- package/dist/channel-tools.js.map +1 -1
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/features/card-callback.d.ts +6 -2
- package/dist/features/card-callback.d.ts.map +1 -1
- package/dist/features/card-callback.js +3 -1
- package/dist/features/card-callback.js.map +1 -1
- package/dist/features/ext-capabilities.d.ts +26 -0
- package/dist/features/ext-capabilities.d.ts.map +1 -1
- package/dist/features/ext-capabilities.js +32 -0
- package/dist/features/ext-capabilities.js.map +1 -1
- package/dist/features/ext-tool-cards.d.ts +52 -0
- package/dist/features/ext-tool-cards.d.ts.map +1 -0
- package/dist/features/ext-tool-cards.js +152 -0
- package/dist/features/ext-tool-cards.js.map +1 -0
- package/dist/features/ext-tool-interaction.d.ts +53 -0
- package/dist/features/ext-tool-interaction.d.ts.map +1 -0
- package/dist/features/ext-tool-interaction.js +103 -0
- package/dist/features/ext-tool-interaction.js.map +1 -0
- package/dist/features/extension-store.d.ts +24 -0
- package/dist/features/extension-store.d.ts.map +1 -1
- package/dist/features/extension-store.js +3 -0
- package/dist/features/extension-store.js.map +1 -1
- package/dist/features/qq-approval.d.ts +12 -0
- package/dist/features/qq-approval.d.ts.map +1 -1
- package/dist/features/qq-approval.js +43 -5
- package/dist/features/qq-approval.js.map +1 -1
- package/dist/features/qq-user-questions.d.ts +34 -2
- package/dist/features/qq-user-questions.d.ts.map +1 -1
- package/dist/features/qq-user-questions.js +106 -1
- package/dist/features/qq-user-questions.js.map +1 -1
- package/dist/gateway/bootstrap.d.ts.map +1 -1
- package/dist/gateway/bootstrap.js +53 -4
- package/dist/gateway/bootstrap.js.map +1 -1
- package/dist/gateway/debounce.d.ts.map +1 -1
- package/dist/gateway/debounce.js +132 -3
- package/dist/gateway/debounce.js.map +1 -1
- package/dist/transport/inbound.js +2 -1
- package/dist/transport/inbound.js.map +1 -1
- package/examples/ext-tools/README.md +47 -0
- package/examples/ext-tools/vote.mjs +318 -0
- package/package.json +1 -1
- package/client/qqbot-settings.js.bak-ctxkey-1790880133352 +0 -5069
- package/client/qqbot-settings.js.bak-diaglog +0 -5866
- package/client/qqbot-settings.js.bak-inc-1790865292905 +0 -4967
- package/client/qqbot-settings.js.bak-inc-1790865309979 +0 -4967
- package/client/qqbot-settings.js.bak-mmui-1790922963087 +0 -5085
- package/client/qqbot-settings.js.bak-mobile-css-1790817989692 +0 -4912
- package/client/qqbot-settings.js.bak-newer-1790865544006 +0 -5023
- package/client/qqbot-settings.js.bak-radio-1790899148239 +0 -5076
- package/client/qqbot-settings.js.bak-stick-1790865591295 +0 -5033
- package/client/qqbot-settings.js.bak-touch-1790818115035 +0 -4912
- package/client/qqbot-settings.js.bak-touch2-1790818130561 +0 -4912
- package/client/qqbot-settings.js.bak-ui4b-1790879732726 +0 -5046
package/client/qqbot-settings.js
CHANGED
|
@@ -218,7 +218,7 @@ window.__ModuleLoader__.load({
|
|
|
218
218
|
sticker: v.sticker || {},
|
|
219
219
|
injectRules: Array.isArray(v.injectRules) ? v.injectRules : [],
|
|
220
220
|
imageHint: typeof v.imageHint === 'boolean' ? v.imageHint : undefined,
|
|
221
|
-
messageReference: v.messageReference !== false,
|
|
221
|
+
messageReference: v.messageReference !== false,
|
|
222
222
|
diagLog: v.diagLog === true,
|
|
223
223
|
schedule: v.schedule && Array.isArray(v.schedule.targets) ? v.schedule : { targets: [] },
|
|
224
224
|
// groupPrompt 必须读回来, 否则每次保存都会把它清空成 ''
|
|
@@ -272,7 +272,7 @@ window.__ModuleLoader__.load({
|
|
|
272
272
|
injectRules: cfg.injectRules,
|
|
273
273
|
// 2026-09-30 修: 这两个开关原来漏写进 patch → 面板勾了/取消了都存不下去(读得到、写不回)
|
|
274
274
|
imageHint: cfg.imageHint !== false,
|
|
275
|
-
messageReference: cfg.messageReference !== false,
|
|
275
|
+
messageReference: cfg.messageReference !== false,
|
|
276
276
|
diagLog: cfg.diagLog === true,
|
|
277
277
|
// 定时唤醒(④)已并入「定时任务」页编辑; 这里原样带过不丢即可
|
|
278
278
|
schedule: cfg.schedule && Array.isArray(cfg.schedule.targets) ? cfg.schedule : { targets: [] },
|
|
@@ -292,7 +292,7 @@ window.__ModuleLoader__.load({
|
|
|
292
292
|
behavior: v2.behavior || {}, sticker: v2.sticker || {},
|
|
293
293
|
injectRules: Array.isArray(v2.injectRules) ? v2.injectRules : [],
|
|
294
294
|
imageHint: typeof v2.imageHint === 'boolean' ? v2.imageHint : undefined,
|
|
295
|
-
messageReference: v2.messageReference !== false,
|
|
295
|
+
messageReference: v2.messageReference !== false,
|
|
296
296
|
diagLog: v2.diagLog === true,
|
|
297
297
|
schedule: v2.schedule && Array.isArray(v2.schedule.targets) ? v2.schedule : { targets: [] },
|
|
298
298
|
groupPrompt: typeof v2.groupPrompt === 'string' ? v2.groupPrompt : (typeof cfg.groupPrompt === 'string' ? cfg.groupPrompt : DEFAULT_GROUP_PROMPT),
|
|
@@ -336,7 +336,16 @@ window.__ModuleLoader__.load({
|
|
|
336
336
|
BoolRow({ label: '开启延迟聚合(不勾=回到来一条回一条)', value: dbc.enabled !== false, onChange: function (v) { setBehavior({ debounce: { ...dbc, enabled: v } }) } }),
|
|
337
337
|
NumRow({ label: '对方停口几秒后她才开口(默认3;0=不停顿)', value: dbc.silenceSec != null ? dbc.silenceSec : 3, onChange: function (v) { setBehavior({ debounce: { ...dbc, silenceSec: v } }) } }),
|
|
338
338
|
NumRow({ label: '攒满几条立即开口,不等对方停(默认10)', value: dbc.maxMsgs != null ? dbc.maxMsgs : 10, onChange: function (v) { setBehavior({ debounce: { ...dbc, maxMsgs: v } }) } }),
|
|
339
|
-
BoolRow({ label: '有人 @ 她时也走延迟(不勾=@到秒回)', value: dbc.mentionDelayed !== false, onChange: function (v) { setBehavior({ debounce: { ...dbc, mentionDelayed: v } }) } })
|
|
339
|
+
BoolRow({ label: '有人 @ 她时也走延迟(不勾=@到秒回)', value: dbc.mentionDelayed !== false, onChange: function (v) { setBehavior({ debounce: { ...dbc, mentionDelayed: v } }) } }),
|
|
340
|
+
h('div', { style: { fontSize: 12, color: '#666', margin: '10px 0 2px' } }, '她正在思考/输出时, 群里又来了新消息怎么办(同宿主「繁忙时的发送行为」那两项):'),
|
|
341
|
+
h('div', { style: { display: 'flex', gap: 14, alignItems: 'center', flexWrap: 'wrap' } },
|
|
342
|
+
['queue', 'interject'].map(function (m) {
|
|
343
|
+
var cur = dbc.busySendMode === 'interject' ? 'interject' : 'queue'
|
|
344
|
+
return h('label', { style: { display: 'inline-flex', gap: 5, alignItems: 'center', fontSize: 12, color: '#333', cursor: 'pointer' } },
|
|
345
|
+
h('input', { type: 'radio', name: 'qqs-busy', checked: cur === m, onChange: function () { setBehavior({ debounce: { ...dbc, busySendMode: m } }) } }),
|
|
346
|
+
m === 'queue' ? '排队发送(默认: 攒着, 等这轮回完再一起看)' : '插话发送(在这回的轮次之间立刻插进去)')
|
|
347
|
+
})),
|
|
348
|
+
h('div', { style: { fontSize: 12, color: '#888' } }, '排队=她正忙时消息攒在窗口里, 等这轮回合结束才整批送进去(带"上次回复前群友所发"的提示)。插话=照样先聚合(静默秒数/条数上限都不变, 不会一条条吵醒她), 但不等回合结束, 直接在回合内的轮次之间插进去 —— 每次插话都带一句"先做完当前任务、别被带偏"的轻提示。注意: 若她这一步是纯文字收尾(后面没有工具轮次), 插话会留到下次唤醒才被读到, 效果和排队一样(宿主 inject 的固有语义)。保存即热更新, 不用重启。')),
|
|
340
349
|
|
|
341
350
|
h('div', { style: sectionTitle }, '② 发表情包的限制(全默认不限制)'),
|
|
342
351
|
h('p', { style: { fontSize: 12, color: '#888' } }, '防止她聊天时表情包刷屏;下面两项是"她主动发图"时才用——群里很热闹才发,冷清就憋着。不想管就保持全 0,也别勾总开关。'),
|
|
@@ -376,6 +385,16 @@ window.__ModuleLoader__.load({
|
|
|
376
385
|
BoolRow({ label: '开启 QQ 远程审批(不勾=保持默认审批方式)', value: cfg.enableApprovals === true, onChange: function (v) { setCfg(function (c) { return { ...c, enableApprovals: v } }) } }),
|
|
377
386
|
NumRow({ label: '审批等待秒数(超时自动拒绝;默认120)', value: Math.round((cfg.approvalTimeoutMs || 120000) / 1000), onChange: function (v) { setCfg(function (c) { return { ...c, approvalTimeoutMs: v * 1000 } }) } })),
|
|
378
387
|
|
|
388
|
+
h('div', { style: sectionTitle }, '⑥ 提问卡片(她问人时要不要在旁边干等)'),
|
|
389
|
+
h('p', { style: { fontSize: 12, color: '#888' } }, '她调用 ask_user_question 问你或群友时怎么等答案。后台提问=卡片发出去她就能接着聊天/干活, 对方答完之后答案会作为一条"提问卡片·回执"自动送回她的会话(她正忙→插进当前回合不打断; 她闲着→叫醒她接着处理), 超时没答也会收到一条"超时未答"的回执。阻塞等待=旧行为, 她的这一回合一直挂到对方作答或超时, 期间收不了新消息。'),
|
|
390
|
+
h('div', { style: boxStyle },
|
|
391
|
+
['async', 'blocking'].map(function (m) {
|
|
392
|
+
var cur = cfg.questionsMode === 'blocking' ? 'blocking' : 'async'
|
|
393
|
+
return h('label', { style: { display: 'inline-flex', gap: 5, alignItems: 'center', fontSize: 12, color: '#333', cursor: 'pointer', marginRight: 16 } },
|
|
394
|
+
h('input', { type: 'radio', name: 'qqs-qmode', checked: cur === m, onChange: function () { setCfg(function (c) { return { ...c, questionsMode: m } }) } }),
|
|
395
|
+
m === 'async' ? '后台提问(推荐默认: 不卡她)' : '阻塞等待(旧行为: 她会卡住)')
|
|
396
|
+
})),
|
|
397
|
+
|
|
379
398
|
h('div', { style: { ...card, margin: '10px 0', padding: '12px 16px' } },
|
|
380
399
|
h('div', { style: { fontWeight: 700, fontSize: 13, marginBottom: 2 } }, '⚙ 群管理基础设置'),
|
|
381
400
|
h('p', { style: { fontSize: 12, color: T.text3, margin: '0 0 6px' } }, '开启后 QQ 会话里可用群管理工具; 踢人/成员列表等官方未开放能力会在下方 Tab 里提示等待公测。'),
|
|
@@ -979,7 +998,7 @@ window.__ModuleLoader__.load({
|
|
|
979
998
|
},
|
|
980
999
|
injectRules: Array.isArray(v.injectRules) ? v.injectRules : [],
|
|
981
1000
|
imageHint: typeof v.imageHint === 'boolean' ? v.imageHint : undefined,
|
|
982
|
-
messageReference: v.messageReference !== false,
|
|
1001
|
+
messageReference: v.messageReference !== false,
|
|
983
1002
|
diagLog: v.diagLog === true,
|
|
984
1003
|
schedule: { targets: targets() },
|
|
985
1004
|
groupPrompt: typeof v.groupPrompt === 'string' ? v.groupPrompt : DEFAULT_GROUP_PROMPT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-tools.d.ts","sourceRoot":"","sources":["../src/channel-tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AA4FlE,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAI1C,eAAO,MAAM,MAAM,UAAY,CAAC;AAWhC,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAiC;AAkD5F,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAErH;AACD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE9E;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAI/D;AAkFD,mDAAmD;AACnD,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"channel-tools.d.ts","sourceRoot":"","sources":["../src/channel-tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AA4FlE,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAI1C,eAAO,MAAM,MAAM,UAAY,CAAC;AAWhC,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAiC;AAkD5F,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAErH;AACD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE9E;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAI/D;AAkFD,mDAAmD;AACnD,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA67DvD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GAAG,KAAK,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,GAAG,KAAK,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BvC;AAOD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;IAE1C;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAExF;AAYD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAKxI;AA4RD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAyI;AACzL,wBAAgB,eAAe,IAAI,MAAM,CAA2F;AA8CpI;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CA+CtJ"}
|
package/dist/channel-tools.js
CHANGED
|
@@ -2203,11 +2203,19 @@ export async function apply(ctx) {
|
|
|
2203
2203
|
});
|
|
2204
2204
|
// 逐个注册并记录结果(便于线上定位是哪个工具失败)
|
|
2205
2205
|
// 供 syncContextTools 动态挂载用(apply 早于 pre-step,填好即可)
|
|
2206
|
-
//
|
|
2207
|
-
//
|
|
2208
|
-
//
|
|
2206
|
+
// ⚠️ 2026-10-07 修(主人实测:"明明没开无上下文模式,也冒出 context_compact / context_drop /
|
|
2207
|
+
// context_memo 三个工具"):
|
|
2208
|
+
// 这里原来写死 `syncContextTools(ctx, true)` ⇒ 把三个上下文工具**无条件**注册进了**插件作用域**;
|
|
2209
|
+
// 而真正按会话开关裁决的是 pre-step 那次(作用在 **agent 作用域**)—— **两次是不同对象**,
|
|
2210
|
+
// 所以"开则保持、关则注销"压根够不到 apply 这一份 ⇒ **没开的会话也能调用**(与设计
|
|
2211
|
+
// "只在「无上下文模式+智能判断」开启时出现"冲突)。
|
|
2212
|
+
// 现在传 false:插件作用域不再预注册这三个工具(②段的 QQ 群管理工具照旧挂,语义不变),
|
|
2213
|
+
// 三者完全交给 pre-step 按会话裁决 —— 开了的会话照挂,没开的会话真的没有。
|
|
2214
|
+
// ⛔ 别再改回 true:那等于给所有会话开后门。
|
|
2215
|
+
// 代价:插件作用域不再"提前"备一份,开启的会话若在极早期回合看不到工具,等下一个 step
|
|
2216
|
+
// (pre-step 每个 step 都跑)即出现 —— 比"人人都有"划算得多。
|
|
2209
2217
|
try {
|
|
2210
|
-
syncContextTools(ctx,
|
|
2218
|
+
syncContextTools(ctx, false);
|
|
2211
2219
|
}
|
|
2212
2220
|
catch { /* ignore */ }
|
|
2213
2221
|
const toolDefs = [
|