v1.8.0: 新增「发送内容」三选一(只发评论/只发私信不发评论/评论+私信),私信对象明确仅评论区用户;只发私信模式下按增量判断是否记为已处理

This commit is contained in:
personal82555 committed 2026-10-13 22:25:43 +08:00
1 parent 91c4666998
commit a320658ac8
4 files changed
+50 -24

No files matched your search

+27 -11
View File
@@ -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()) {