feat(AutoPlanDomain): 添加秘境配置按日期执行功能

- 新增 parseDay 辅助函数用于安全解析 day 字段
- 在配置加载过程中对 day 字段进行解析和验证
- 解析输入数据时新增 day 字段支持并调整索引位置
- 在秘境顺序对象中添加 day 执行日期字段
- 更新配置字符串格式说明文档
- 新增 getDayOfWeek 工具函数获取当前星期信息
- 添加星期几执行的逻辑判断功能
This commit is contained in:
yan
2026-02-08 22:46:40 +08:00
parent 00a5b474f1
commit 43137cd1c9
3 changed files with 44 additions and 5 deletions

View File

@@ -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);

View File

@@ -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": ""
},
{

View File

@@ -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
}