diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d4a925..66ae5cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ * 新增指令`#米币查询` * 新增`道具图鉴`图鉴数据 * 修正米游币签到逻辑 +* 补充指令`原神签到` + * 由于原神签到有提示验证码问题可能导致签到不了 + * 补充指令 `原神签到`以及`米社原神全部签到`进行二次签到避免漏签 # 1.1.6 * 通过发送token以及devId给机器人实现绑定 * 格式支持`ai=*;ci=*;oi=*;ct=***********;si=**************;bi=***********;devId=***********` diff --git a/apps/sign.js b/apps/sign.js index abdeb7e..d650042 100644 --- a/apps/sign.js +++ b/apps/sign.js @@ -25,11 +25,11 @@ export const rule = { describe: "米币查询" }, sign: { - reg: "^#*(崩坏3|崩坏2|未定事件簿)签到$", + reg: "^#*(原神|崩坏3|崩坏2|未定事件簿)签到$", describe: "米社规则签到" }, signlist: { - reg: "^#(米游币|米社)全部签到$", + reg: "^#(米游币|米社(原神|崩坏3|崩坏2|未定事件簿)*)全部签到$", describe: "米游币全部签到" }, sendyunTime: { @@ -90,7 +90,7 @@ export async function sign(e) { let ForumData = await getDataList(msg); e.reply(`开始尝试${msg}签到预计${msg=='全部'?"60":"5-10"}秒~`) for (let forum of ForumData) { - if (!(["崩坏3", "崩坏2", "未定事件簿"].includes(forum.name))) { + if (!(["原神","崩坏3", "崩坏2", "未定事件簿"].includes(forum.name))) { continue; } resultMessage += `**${forum.name}**\n` @@ -226,6 +226,10 @@ export async function mysSign(e) { export async function bbsSeach(e){ START = moment().unix(); + let isck = await cookie(e); + if (!isck) { + return true; + } let miHoYoApi = new MihoYoApi(e); if (Object.keys((await miHoYoApi.getStoken(e.user_id))).length == 0) { let cookiesDoc = await getcookiesDoc() @@ -377,7 +381,7 @@ export async function allMysSign() { } //定时签到任务 -export async function allSign() { +export async function allSign(e="") { Bot.logger.mark(`开始米社签到任务`); let isAllSign = await gsCfg.getfileYaml(`${_path}/plugins/xiaoyao-cvs-plugin/config/`, "config").isAllSign let userIdList = []; @@ -390,6 +394,7 @@ export async function allSign() { userIdList.push(user_id) } } + let msg=e?.msg; for (let qq of userIdList) { let user_id = qq; let e = { @@ -397,7 +402,11 @@ export async function allSign() { qq, isTask: true }; - e.msg = "全部" + if(msg){ + e.msg=msg.replace(/全部|签到|米社/g,""); + }else{ + e.msg = "全部" + } Bot.logger.mark(`正在为qq${user_id}米社签到中...`); e.reply = (msg) => { if (!isAllSign||isbool) { @@ -445,7 +454,7 @@ export async function signlist(e) { await allMysSign() } else { isbool = true; - await allSign() + await allSign(e) } e.reply(`${msg}签到任务已完成`); ismysbool=false; diff --git a/model/mys/mihoyo-api.js b/model/mys/mihoyo-api.js index 790594f..393ca00 100644 --- a/model/mys/mihoyo-api.js +++ b/model/mys/mihoyo-api.js @@ -118,8 +118,13 @@ export default class MihoYoApi { } let message = `\n${name}共计${data.list.length}个账号\n`; for (let item of data.list) { - let objshuj = (await this.postSign(kkbody, item.game_uid, item.region)) - message += `游戏id:${item.game_uid}:${objshuj.message=="OK"?"签到成功":objshuj.message}\n` + let objshuj = await this.isPostSign(kkbody, item.game_uid, item.region) + if(objshuj.retcode==0){ + message+=`游戏id:${item.nickname}-${item.game_uid}:今日已签到~\n`; + continue; + } + objshuj=(await this.postSign(kkbody, item.game_uid, item.region)) + message += `游戏id:${item.nickname}-${item.game_uid}:${objshuj.message=="OK"?"签到成功":objshuj.message}\n` await utils.randomSleepAsync(); } // 获取签到信息和奖励信息 、、后续重新梳理补充 @@ -323,15 +328,15 @@ export default class MihoYoApi { getpubHeaders(board) { const randomStr = utils.randomString(6); const timestamp = Math.floor(Date.now() / 1000) - let sign = md5(`salt=b253c83ab2609b1b600eddfe974df47b&t=${timestamp}&r=${randomStr}`); + let sign = md5(`salt=9nQiU3AV0rJSIBWgdynfoGMGKaklfbM7&t=${timestamp}&r=${randomStr}`); return { 'accept-language': 'zh-CN,zh;q=0.9,ja-JP;q=0.8,ja;q=0.7,en-US;q=0.6,en;q=0.5', 'x-rpc-device_id': DEVICE_ID, - 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.3.0', + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.34.1', Referer: board.getReferer(), Host: 'api-takumi.mihoyo.com', 'x-rpc-channel': 'appstore', - 'x-rpc-app_version': '2.3.0', + 'x-rpc-app_version': '2.34.1', 'x-requested-with': 'com.mihoyo.hyperion', 'x-rpc-client_type': '5', 'Content-Type': 'application/json;charset=UTF-8', @@ -421,6 +426,22 @@ export default class MihoYoApi { // const nickname = data?.list?. [0]?.nickname return resObj } + // 游戏签到操作查询 + async isPostSign(board, game_uid, region) { + let web_api = `https://api-takumi.mihoyo.com` + let url = + `${web_api}/event/luna/info?lang=zh-cn` + if (board.name == "原神") { + url = `${web_api}/event/bbs_sign_reward/info` + } + if (board.name == "崩坏2" || board.name == "未定事件簿") { + url = `${web_api}/event/luna/info?lang=zh-cn` + } + url += `${board.name == "原神"?"?":"&"}region=${region}&act_id=${board.actid}&uid=${game_uid}` + let res = await superagent.get(url).set(this.getpubHeaders(board)).timeout(10000); + let resObj = JSON.parse(res.text); + return resObj + } // 游戏签到操作 async postSign(board, game_uid, region) { let web_api = `https://api-takumi.mihoyo.com`