feat(AutoPlanDomain): 支持多日期执行配置

- 将单日期执行配置改为多日期数组配置,支持多个执行日期
- 修改数据结构从 day 字段改为 days 数组字段存储执行日期
- 更新日期解析逻辑,支持通过 "/" 分割符配置多个执行日期
- 调整过滤条件以匹配新的多日期数组格式
- 更新 README 文档说明多日期配置的使用方法
- 修改示例配置展示多日期功能的使用场景
This commit is contained in:
yan
2026-02-09 22:42:52 +08:00
parent 14cb1b86b8
commit 841d966a68
2 changed files with 36 additions and 23 deletions

View File

@@ -41,19 +41,19 @@
**字段详解**
| 位置 | 字段 | 是否必填 | 说明 | 示例 |
|:---:|:---:|:---:|:---:|:---:|
| 1 | 队伍名称 | 可选 | BetterGI 中已保存的队伍名称(用于切换队伍) | 速刷 / 雷国 / 国家队 |
| 2 | 秘境名称/刷取物品名称 | **必填** | 与 BetterGI 自动秘境识别的名称保持一致 | 苍白的遗荣 / 炽烈的炎之魔女 / 辰砂往生录 |
| 3 | 刷几轮 | 可选 | 整数,执行几轮(每轮 = 1次完整秘境 | 3 / 5 / 10 |
| 4 | 限时/周日 | 可选 | 1=周一~周六可用、2=周日可用、3=仅周日、留空=不限制 | 1 / 2 / 3 |
| 5 | 周几执行(0-6) | 可选 | 0=周日,1=周一,...,6=周六;不填=每天都可执行 | 0 / 3 |
| 6 | 执行顺序 | 可选 | 数字越大越优先执行(同时间点先跑优先级高的) | 9 / 5 / 1 |
| 位置 | 字段 | 是否必填 | 说明 | 示例 |
|:---:|:---:|:---:|:--------------------------------------:|:-----------------------:|
| 1 | 队伍名称 | 可选 | BetterGI 中已保存的队伍名称(用于切换队伍) | 速刷 / 雷国 / 国家队 |
| 2 | 秘境名称/刷取物品名称 | **必填** | 与 BetterGI 自动秘境识别的名称保持一致 | 苍白的遗荣 / 炽烈的炎之魔女 / 辰砂往生录 |
| 3 | 刷几轮 | 可选 | 整数,执行几轮(每轮 = 1次完整秘境 | 3 / 5 / 10 |
| 4 | 限时/周日 | 可选 | 1=周一~周六可用、2=周日可用、3=仅周日、留空=不限制 | 1 / 2 / 3 |
| 5 | 周几执行(0-6) | 可选 | 0=周日,1=周一,...,6=周六;可多选按`/`分割,不填=每天都可执行 | 0/3,3 |
| 6 | 执行顺序 | 可选 | 数字越大越优先执行(同时间点先跑优先级高的) | 9 / 5 / 1 |
**配置示例**
```
速刷|苍白的遗荣|3|1||9, # 优先级最高,每天刷3轮遗荣
速刷|苍白的遗荣|3|1|0/3|9, # 优先级最高,周日,周三刷3轮遗荣
国家队|炽烈的炎之魔女|5|||5, # 优先级次之每天刷5轮魔女
雷国|无想之刃狭间|2|2|0|2 # 只在周日刷,优先级较低
```
@@ -63,7 +63,7 @@
[
{
"order": 1, // 顺序值
"day": 0,// 执行日期
"days": [0],// 执行日期
"autoFight": {
"domainName": undefined,//秘境名称
"partyName": undefined,//队伍名称

View File

@@ -61,8 +61,12 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) {
uidConfigList.forEach(item => {
// 将秘境顺序对象添加到列表中
// 主逻辑优化
if (item.day !== undefined) {
item.day = parseDay(item.day);
// if (item.day !== undefined) {
// item.day = parseDay(item.day);
// }
if (item.days && item.days.length > 0) {
item.days = item.days.map(day => parseDay(day)).filter(day => day !== undefined)
// item.day = parseDay(item.day);
}
autoFightOrderSet.add(item)
})
@@ -87,7 +91,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 day = arr[4].trim() != "" ? parseInt(arr[4]) : undefined;
let days = arr[4].trim() !== ""
? arr[4].split('/').map(d => parseInt(d.trim())).filter(d => !isNaN(d))
: [];
// 解析顺序值,处理可能的无效值
let order = (() => {
const rawOrder = arr[5]; // 获取原始值
@@ -123,7 +130,8 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) {
// 创建秘境顺序对象
let autoFightOrder = {
order: order, // 顺序值
day: day,// 执行日期
// day: day,// 执行日期
days: days, // 执行日期(数组)
autoFight: autoFight // 秘境信息对象
}
// 将秘境顺序对象添加到列表中
@@ -136,14 +144,15 @@ async function loadMode(Load, autoFightOrderSet, domainConfig) {
case LoadType.bgi_tools:
// 通过bgi_tools方式加载配置
log.info(`开始拉取bgi_tools配置`)
const uidConfigListBgiTools = await pullJsonConfig(config.user.uid + '',config.bgi_tools.api.httpPullJsonConfig) || []
const uidConfigListBgiTools = await pullJsonConfig(config.user.uid + '', config.bgi_tools.api.httpPullJsonConfig) || []
if (uidConfigListBgiTools?.length > 0) {
// 如果配置列表不为空,遍历并添加到结果集合中
uidConfigListBgiTools.forEach(item => {
// 将秘境顺序对象添加到列表中
// 主逻辑优化
if (item.day !== undefined) {
item.day = parseDay(item.day);
if (item.days && item.days.length > 0) {
item.days = item.days.map(day => parseDay(day)).filter(day => day !== undefined)
// item.day = parseDay(item.day);
}
autoFightOrderSet.add(item)
})
@@ -186,8 +195,11 @@ async function initDomainOrderList(domainConfig) {
let from = Array.from(autoFightOrderSet);
let dayOfWeek = getDayOfWeek();
from = from.filter(item => {
if (item.day) {
return item.day === dayOfWeek.day
// if (item.day) {
// return item.day === dayOfWeek.day
// }
if (item.days && item.days.length > 0) {
return item.days.includes(dayOfWeek.day);
}
return true
})
@@ -214,7 +226,7 @@ async function main() {
await init();
if (config.bgi_tools.open.open_push) {
log.info(`开始推送bgi_tools配置`)
await pushAllJsonConfig(JSON.parse(file.readTextSync(config.path.domain)),config.bgi_tools.api.httpPushAllJsonConfig)
await pushAllJsonConfig(JSON.parse(file.readTextSync(config.path.domain)), config.bgi_tools.api.httpPushAllJsonConfig)
}
// 获取秘境配置
let domainConfig = config.domain.config;
@@ -225,6 +237,7 @@ async function main() {
}
await main()
async function test() {
await init();
const text = file.readTextSync(config.path.domain);
@@ -232,9 +245,9 @@ async function test() {
// log.info("text:{1}",text)
const list = JSON.parse(text);
// log.info("list:{1}",list)
log.info("httpPullJsonConfig:{1}",JSON.parse(JSON.stringify(config.bgi_tools)).api.httpPushAllJsonConfig)
log.info("|test==>config.bgi_tools:{1}",JSON.stringify(config.bgi_tools))
await pushAllJsonConfig(list,config.bgi_tools.api.httpPushAllJsonConfig)
log.info("httpPullJsonConfig:{1}", JSON.parse(JSON.stringify(config.bgi_tools)).api.httpPushAllJsonConfig)
log.info("|test==>config.bgi_tools:{1}", JSON.stringify(config.bgi_tools))
await pushAllJsonConfig(list, config.bgi_tools.api.httpPushAllJsonConfig)
}
// await test()