From 43137cd1c9ea2b7378e9c8c87641c19085734bf1 Mon Sep 17 00:00:00 2001 From: yan Date: Sun, 8 Feb 2026 22:46:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(AutoPlanDomain):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=A7=98=E5=A2=83=E9=85=8D=E7=BD=AE=E6=8C=89=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 parseDay 辅助函数用于安全解析 day 字段 - 在配置加载过程中对 day 字段进行解析和验证 - 解析输入数据时新增 day 字段支持并调整索引位置 - 在秘境顺序对象中添加 day 执行日期字段 - 更新配置字符串格式说明文档 - 新增 getDayOfWeek 工具函数获取当前星期信息 - 添加星期几执行的逻辑判断功能 --- repo/js/AutoPlanDomain/main.js | 23 ++++++++++++++++++++--- repo/js/AutoPlanDomain/settings.json | 2 +- repo/js/AutoPlanDomain/utils/tool.js | 24 +++++++++++++++++++++++- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/repo/js/AutoPlanDomain/main.js b/repo/js/AutoPlanDomain/main.js index 6e2bafe7d..29c8962fb 100644 --- a/repo/js/AutoPlanDomain/main.js +++ b/repo/js/AutoPlanDomain/main.js @@ -31,7 +31,14 @@ async function autoDomainList(autoDomainOrderList) { await autoDomain(item.autoFight); } } - +// 辅助函数:安全地解析 day 字段 +function parseDay(day) { + if (day == null || String(day).trim() === "") { + return undefined; // 空值或无效值返回 undefined + } + const parsedDay = parseInt(String(day).trim(), 10); + return isNaN(parsedDay) ? undefined : parsedDay; // 非法数字返回 undefined +} /** * 根据不同的加载方式加载秘境配置 * @param {string} Load - 加载方式类型,如uid或input @@ -50,6 +57,10 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) { // 如果配置列表不为空,遍历并添加到结果集合中 uidConfigList.forEach(item => { // 将秘境顺序对象添加到列表中 + // 主逻辑优化 + if (item.day !== undefined) { + item.day = parseDay(item.day); + } autoFightOrderSet.add(item) }) } @@ -73,9 +84,10 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) { let domainName = arr[1]; // 解析秘境名称 let domainRoundNum = arr[2]; // 解析副本轮数 let sundaySelectedValue = arr[3]; // 解析周日|限时选择的值 + let day = arr[4].trim() != "" ? parseInt(arr[4]) : undefined; // 解析顺序值,处理可能的无效值 let order = (() => { - const rawOrder = arr[4]; // 获取原始值 + const rawOrder = arr[5]; // 获取原始值 if (rawOrder == null || String(rawOrder).trim() === "") { return 0; // 若为空或无效值,默认返回 0 } @@ -108,6 +120,7 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) { // 创建秘境顺序对象 let autoFightOrder = { order: order, // 顺序值 + day: day,// 执行日期 autoFight: autoFight // 秘境信息对象 } // 将秘境顺序对象添加到列表中 @@ -125,6 +138,10 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) { // 如果配置列表不为空,遍历并添加到结果集合中 uidConfigListBgiTools.forEach(item => { // 将秘境顺序对象添加到列表中 + // 主逻辑优化 + if (item.day !== undefined) { + item.day = parseDay(item.day); + } autoFightOrderSet.add(item) }) } @@ -189,7 +206,7 @@ async function main() { } // 获取秘境配置 let domainConfig = config.domain.config; - //"队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日|执行顺序,..." + //"队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日|周几执行(0-6)不填默认执行|执行顺序,..." const autoFightOrderList = initDomainOrderList(domainConfig); autoFightOrderList.sort((a, b) => b.order - a.order) await autoDomainList(autoFightOrderList); diff --git a/repo/js/AutoPlanDomain/settings.json b/repo/js/AutoPlanDomain/settings.json index a47329d8c..97b450409 100644 --- a/repo/js/AutoPlanDomain/settings.json +++ b/repo/js/AutoPlanDomain/settings.json @@ -14,7 +14,7 @@ { "name": "domain_config", "type": "input-text", - "label": "自动秘境计划配置\n语法:队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日(1-3和本体的一致)|执行顺序(越大越先执行),...\n(无配置可留空如||唯有秘境名称配置不可为空)\n如: 速刷|苍白的遗荣|1||9", + "label": "自动秘境计划配置\n语法:队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日(1-3和本体的一致)|周几执行(0-6)不填默认执行|执行顺序(越大越先执行),...\n(无配置可留空如||唯有秘境名称配置不可为空)\n如: 速刷|苍白的遗荣|1|||9", "default": "" }, { diff --git a/repo/js/AutoPlanDomain/utils/tool.js b/repo/js/AutoPlanDomain/utils/tool.js index bec569b30..be35ab548 100644 --- a/repo/js/AutoPlanDomain/utils/tool.js +++ b/repo/js/AutoPlanDomain/utils/tool.js @@ -28,7 +28,29 @@ async function ocrRegion(x = 0, region3.Dispose() } } +/** + * 获取当前日期的星期信息 + * @returns {Object} 返回包含星期数字和星期名称的对象 + */ +async function getDayOfWeek() { + // 获取当前日期对象 + const today = new Date(); + // 获取当前日期是星期几(0代表星期日,1代表星期一,以此类推) + const day = today.getDay(); + // 创建包含星期名称的数组 + const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; + let weekDay = `${weekDays[day]}`; + + log.debug(`今天是[{day}]`, day) + log.debug(`今天是[{weekDays}]`, weekDay) + // 返回包含星期数字和对应星期名称的对象 + return { + day: day, + dayOfWeek: weekDay + } +} export { - ocrRegion + ocrRegion, + getDayOfWeek } \ No newline at end of file