@sunjuntao/dsh-qqbot 0.1.14 → 0.1.15
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/lib/client.js +1 -1
- package/lib/index.js +17 -6
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -6418,7 +6418,7 @@ function QqbotSettingsTab({ rpcCall }) {
|
|
|
6418
6418
|
"div",
|
|
6419
6419
|
{ className: "qbot-brandHeading" },
|
|
6420
6420
|
h("strong", { className: "qbot-brandName" }, t("app.title")),
|
|
6421
|
-
h("span", { className: "qbot-brandVersion" }, `v${true ? "0.1.
|
|
6421
|
+
h("span", { className: "qbot-brandVersion" }, `v${true ? "0.1.15" : "0.0.2"}`),
|
|
6422
6422
|
h("button", {
|
|
6423
6423
|
className: `qbot-btn qbot-updateBtn${update.done ? " is-done" : ""}`,
|
|
6424
6424
|
type: "button",
|
package/lib/index.js
CHANGED
|
@@ -4626,16 +4626,27 @@ function createBotState() {
|
|
|
4626
4626
|
}
|
|
4627
4627
|
var INCOMING_FINGERPRINT_WINDOW_MS = 15e3;
|
|
4628
4628
|
var INCOMING_FINGERPRINT_CAP = 512;
|
|
4629
|
+
var lastFingerprintSweep = 0;
|
|
4630
|
+
var INCOMING_FINGERPRINT_SWEEP_MS = 6e4;
|
|
4631
|
+
function sweepIncomingFingerprints(state, now) {
|
|
4632
|
+
if (now - lastFingerprintSweep < INCOMING_FINGERPRINT_SWEEP_MS && state.incomingFingerprints.size <= INCOMING_FINGERPRINT_CAP) {
|
|
4633
|
+
return;
|
|
4634
|
+
}
|
|
4635
|
+
lastFingerprintSweep = now;
|
|
4636
|
+
for (const [k, at] of state.incomingFingerprints) {
|
|
4637
|
+
if (now - at > INCOMING_FINGERPRINT_WINDOW_MS) state.incomingFingerprints.delete(k);
|
|
4638
|
+
}
|
|
4639
|
+
}
|
|
4629
4640
|
function markIncoming(state, group, sender, content, now = Date.now()) {
|
|
4630
4641
|
const key = `${group}:${sender}:${content.replace(/\s+/g, "").slice(0, 120)}`;
|
|
4631
4642
|
if (!group || !content) return true;
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
if (now - at > INCOMING_FINGERPRINT_WINDOW_MS) state.incomingFingerprints.delete(k);
|
|
4637
|
-
}
|
|
4643
|
+
const seenAt = state.incomingFingerprints.get(key);
|
|
4644
|
+
if (seenAt !== void 0) {
|
|
4645
|
+
if (now - seenAt <= INCOMING_FINGERPRINT_WINDOW_MS) return false;
|
|
4646
|
+
state.incomingFingerprints.delete(key);
|
|
4638
4647
|
}
|
|
4648
|
+
state.incomingFingerprints.set(key, now);
|
|
4649
|
+
sweepIncomingFingerprints(state, now);
|
|
4639
4650
|
return true;
|
|
4640
4651
|
}
|
|
4641
4652
|
var SEEN_EVENT_CAP = 512;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sunjuntao/dsh-qqbot",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"description": "把 QQ 官方机器人(Webhook 回调)接入本机 DeepSeek Harness:QQ 群/单聊消息(含群全量消息上下文)→ DSH 会话 → 回复发回 QQ,支持被动回复与群主动消息。Connect the official QQ bot (webhook callback) to a local DeepSeek Harness.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|