diff --git a/content.js b/content.js index 07ce1a7..3407626 100644 --- a/content.js +++ b/content.js @@ -960,25 +960,41 @@ step("[" + (task.index + 1) + "/" + task.queue.length + "] " + video.title.slice(0, 30)); const text = video.text || pickTemplate(video.title, cfg.keyword); const SRC_LABEL = { custom: "自定义", ai: "AI", tpl: "模板" }; - step("评论[" + (SRC_LABEL[video.src] || "模板") + "]:" + text.slice(0, 30) + (text.length > 30 ? "…" : "")); + // 发送内容三选一:comment=只评论 / dm=只发私信不发评论 / both=评论+私信 + const what = ["comment", "dm", "both"].indexOf(cfg.sendWhat) >= 0 ? cfg.sendWhat : "comment"; + const doComment = (what === "comment" || what === "both"); + const doDm = (what === "dm" || what === "both"); - const r = await sendOne(video, text, cfg.sendMode !== "api"); - if (r.stopped) { finish(task, false, "已手动停止"); return; } - if (r.fatal) { finish(task, false, r.fatal); return; } + if (doComment) { + step("评论[" + (SRC_LABEL[video.src] || "模板") + "]:" + text.slice(0, 30) + (text.length > 30 ? "…" : "")); - if (r.ok) { - step(r.verified ? "✅ 评论成功" : "⚠️ 已发送但未在页面确认,记为已评论", r.verified ? "ok" : "fail"); - await recordOne(task, video, text, true); + const r = await sendOne(video, text, cfg.sendMode !== "api"); + if (r.stopped) { finish(task, false, "已手动停止"); return; } + if (r.fatal) { finish(task, false, r.fatal); return; } + + if (r.ok) { + step(r.verified ? "✅ 评论成功" : "⚠️ 已发送但未在页面确认,记为已评论", r.verified ? "ok" : "fail"); + await recordOne(task, video, text, true); + } else { + step("❌ 失败:" + r.error, "fail"); + await recordOne(task, video, text, false); + } } else { - step("❌ 失败:" + r.error, "fail"); - await recordOne(task, video, text, false); + step("本条不发评论(发送内容=只发私信)"); } - // 私信(可选,评论后对本视频评论区用户发送;风控更严,间隔更长) - if (cfg.dmEnabled && !stopRequested()) { + // 私信:对本视频评论区里发过评论的人发送;风控更严,间隔更长 + let dmBefore = task.dmSent || 0; // 本视频发送前的累计数,用于算增量 + if (doDm && !stopRequested()) { await runDmStep(task, video); } + // 只发私信模式下也要记为「已处理」,否则下次会重复进同一视频 + // 注意按「本视频的增量」判断,不能用累计数(否则前面发过就会误记后面没发的) + if (!doComment && (task.dmSent || 0) > dmBefore) { + await recordOne(task, video, text, true); + } + task.index += 1; if (task.index < task.queue.length && !stopRequested()) { diff --git a/manifest.json b/manifest.json index 6b94030..834d433 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "B站评论助手", - "version": "1.7.1", + "version": "1.8.0", "description": "B站网页版关键词评论助手:按搜索关键词找视频,默认模拟真人(打开视频页、滚到评论区、逐字输入、点发布),也可快速API直发;支持下载当前页视频;带防重复记录、可中断执行与页面实时进度浮层。", "permissions": ["storage", "tabs", "scripting", "sidePanel", "downloads", "declarativeNetRequest"], "host_permissions": [ diff --git a/sidepanel.html b/sidepanel.html index 53f1aa8..e5c455e 100644 --- a/sidepanel.html +++ b/sidepanel.html @@ -237,11 +237,20 @@ 次(0 = 不过滤) -
- -