fix: align qdreader message box upstream flow

This commit is contained in:
2026-05-22 19:00:30 +08:00
parent eaae089589
commit b7afbf421a
4 changed files with 50 additions and 46 deletions
+16 -15
View File
@@ -757,37 +757,38 @@ function doMessageBox(cookie) {
if (!messageBoxAllowedNow()) return { name: "大咖荐书", ok: true, skipped: true, msg: "不在执行时间 " + messageBoxWindowLabel() + ",已跳过", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var token = messageTokenFromCookie(cookie)
if (!token) return { name: "大咖荐书", ok: true, msg: "缺少消息 token,已跳过", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var baseParams = { token: token, type: "0", pg: "1", pz: "10" }
var baseParams = { appappend: token, categoryIds: "0", pg: "1", pz: "10" }
var res = qdGet("https://magev6.if.qidian.com/argus/api/v2/message/pullmessage", baseParams, cookie)
if (!taskResultOk(res)) return { name: "大咖荐书", ok: false, msg: resultMsg(res) || "消息检查失败", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var groups = firstArray(nested(res, ["Data", "List"]), nested(res, ["data", "List"]), nested(res, ["Data", "MsgList"]), nested(res, ["data", "MsgList"]))
if (!taskResultOk(res)) return { name: "大咖荐书", ok: false, msg: resultMsg(res) || "获取消息列表失败", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var groups = firstArray(nested(res, ["Data", "UserList"]), nested(res, ["data", "UserList"]), nested(res, ["Data", "List"]), nested(res, ["data", "List"]), nested(res, ["Data", "MsgList"]), nested(res, ["data", "MsgList"]))
if (!groups.length) return { name: "大咖荐书", ok: true, msg: "无消息", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var senders = []
for (var i = 0; i < groups.length; i++) if (Number(field(groups[i], ["RedPoint", "redPoint"], 0)) === 1 && field(groups[i], ["SenderId", "senderId", "FromUserId", "fromUserId"], "")) senders.push(groups[i])
if (!senders.length) return { name: "大咖荐书", ok: true, msg: "无未读荐书", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
for (var i = 0; i < groups.length; i++) if (Number(field(groups[i], ["RedPoint", "redPoint"], 0)) === 1 && field(groups[i], ["FromId", "fromId", "SenderId", "senderId", "FromUserId", "fromUserId"], "")) senders.push(groups[i])
if (!senders.length) return { name: "大咖荐书", ok: true, msg: "无未读消息", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
var handled = 0
for (var s = 0; s < senders.length; s++) {
var sid = field(senders[s], ["SenderId", "senderId", "FromUserId", "fromUserId"], "")
var msgRes = qdGet("https://magev6.if.qidian.com/argus/api/v2/message/pullmessage", { token: token, type: "0", senderId: sid, pg: "1", pz: "10" }, cookie)
var sid = field(senders[s], ["FromId", "fromId", "SenderId", "senderId", "FromUserId", "fromUserId"], "")
var msgRes = qdGet("https://magev6.if.qidian.com/argus/api/v2/message/pullmessage", { appappend: token, categoryIds: "0", fromId: sid, pg: "1", pz: "10" }, cookie)
if (!taskResultOk(msgRes)) continue
var msgs = firstArray(nested(msgRes, ["Data", "List"]), nested(msgRes, ["data", "List"]), nested(msgRes, ["Data", "Messages"]), nested(msgRes, ["data", "Messages"]))
var msgs = firstArray(nested(msgRes, ["Data", "MsgList"]), nested(msgRes, ["data", "MsgList"]), nested(msgRes, ["Data", "List"]), nested(msgRes, ["data", "List"]), nested(msgRes, ["Data", "Messages"]), nested(msgRes, ["data", "Messages"]))
for (var j = 0; j < msgs.length; j++) {
if (!recentCreateTime(field(msgs[j], ["CreateTime", "createTime"], ""))) continue
var orderId = orderIdFromText(field(msgs[j], ["Content", "content", "Link", "link", "Url", "url"], ""))
var orderId = orderIdFromText(field(msgs[j], ["ActionUrl", "actionUrl", "RefUrl", "refUrl", "Content", "content", "Link", "link", "Url", "url"], ""))
if (!orderId) continue
var detail = qdGet("/argus/api/v2/recommend/getrewarddetail", { orderId: orderId, checkRisk: "0" }, cookie)
var detail = qdGet("/argus/api/v1/interaction/rewarddetail", { orderId: orderId, refresh: "0" }, cookie)
if (!taskResultOk(detail)) continue
var data = detail.Data || detail.data || {}
var chance = Number(data.ChanceCount || 0)
var rewardType = Number(data.RewardType || data.Type || 0)
var bookStatus = Number(data.BookStatus || 0)
var bookId = data.BookId || ""
if (data.Status !== undefined && Number(data.Status) !== 1) continue
if (chance > 0) { var cb = qdPost("/argus/api/v2/recommend/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (taskResultOk(cb)) handled++; continue }
if (rewardType === 1 || rewardType === 2) { if (!bookId) continue; var add = qdPost("/argus/api/v2/recommend/addbookshelf", { orderId: orderId, bookId: bookId }, cookie); if (taskResultOk(add)) handled++; continue }
if (rewardType === 3) { var rc = qdPost("/argus/api/v2/recommend/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (!taskResultOk(rc)) continue; var r2 = qdPost("/argus/api/v2/recommend/rewardcallback", { orderId: orderId, checkRisk: "0" }, cookie); if (taskResultOk(r2)) handled++ }
if (chance <= 0 && bookStatus !== 0 && bookStatus !== 1 && bookStatus !== 2) continue
if (chance > 0) { var cb = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (taskResultOk(cb) || String(resultCode(cb)) === "0") handled++; continue }
if (bookStatus === 0 || bookStatus === 1) { if (!bookId) continue; var add = qdPost("/argus/api/v1/interaction/rewardaddshelf", { orderId: orderId, bookId: bookId }, cookie); if (taskResultOk(add) || String(resultCode(add)) === "0") handled++; continue }
if (bookStatus === 2) { var rc = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "1" }, cookie); if (!taskResultOk(rc) && String(resultCode(rc)) !== "0") continue; var r2 = qdPost("/argus/api/v1/interaction/rewardcallback", { orderId: orderId, checkRisk: "0" }, cookie); if (taskResultOk(r2) || String(resultCode(r2)) === "0") handled++ }
}
}
return { name: "大咖荐书", ok: true, msg: handled ? ("处理 " + handled + " 荐书奖励") : "暂无可处理荐书", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
return { name: "大咖荐书", ok: true, msg: handled ? ("成功处理 " + handled + " 荐书") : "无待处理荐书", path: "https://magev6.if.qidian.com/argus/api/v2/message/pullmessage" }
}
function doExtraTask(task, cookie) {
if (task.handler === "receiveGifts") return doReceiveGifts(cookie)