mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-28 05:29:52 +08:00
* feat(ActivitySwitchNotice): 添加新活动通知功能 - 新增配置文件路径定义用于存储活动数据 - 在activityMain函数中添加newActivityNotice参数控制新活动通知 - 读取历史活动配置文件并转换为Set进行对比 - 创建activityNameSet记录当前页面活动名称 - 修复OCR键值获取中的参数传递格式问题 - 实现新活动检测逻辑并与历史数据进行比较 - 添加新活动通知发送功能包括UID识别 - 更新版本号从0.0.8到0.1.0并在README中记录变更 - 在设置界面添加新活动通知的启用开关选项 * feat(ActivitySwitchNotice): 更新活动主函数调用以支持新活动通知设置 - 修改 activityMain 函数调用,传入 settings.newActivityNotice 参数 - 实现新活动通知功能的配置支持 * feat(ActivitySwitchNotice): 优化活动通知逻辑并修复数据处理问题 - 在遍历活动列表时同步更新 activityNameSet 集合 - 注释掉冗余的数组合并操作避免重复数据处理 - 重构新增活动检测逻辑提高代码可读性 - 优化通知发送后的配置文件更新时机确保数据一致性 - 改进错误处理机制并添加调试日志 - 修复当无新增活动时不执行通知发送的逻辑分支 * feat(ActivitySwitchNotice): 实现基于UID的个性化活动数据管理 - 添加UID识别功能,通过uidUtil.ocrUID()获取用户唯一标识 - 修改活动数据结构,将全局活动集合改为按UID分类存储 - 实现用户特定活动过滤,只处理当前UID相关的活动数据 - 更新活动配置文件写入逻辑,支持多用户数据分离存储 - 优化新增活动检测机制,基于用户历史活动进行精确匹配 - 重构活动数据序列化处理,确保数据格式兼容性和持久化
585 lines
22 KiB
Markdown
585 lines
22 KiB
Markdown
# 活动期限/周本通知器
|
||
|
||
## 项目概述
|
||
|
||
这是一个用于《原神》游戏的自动化脚本工具,主要功能是自动检测游戏内活动的剩余时间,并在活动即将结束时/每周指定日期自动提醒征讨领域减半剩余次数发送通知提醒玩家。
|
||
|
||
---
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 自动返回游戏主界面并打开活动页面
|
||
- ✅ OCR识别活动列表和剩余时间
|
||
- ✅ 自动滚动浏览所有活动页面
|
||
- ✅ 智能解析剩余时间(支持"22天14小时"等格式)
|
||
- ✅ 可配置的通知阈值(默认8760小时内结束的活动)
|
||
- ✅ 支持指定特定活动进行监控
|
||
- ✅ 支持活动黑名单过滤功能(0.0.5版本,新增支持为黑名单活动设置特定条件,只有满足条件时才过滤,注:特定条件为空默认没有条件)
|
||
- ✅ 防重复检测机制
|
||
- ✅ 异常处理和错误恢复
|
||
- ✅ 自动提醒征讨领域减半剩余次数(默认`周日`提醒可配置)
|
||
- ✅ 支持独立通知功能(`0.0.4`版本新增 因BGI不支持WebSocket,需搭配bettergi-scripts-tools+开启JS HTTP
|
||
权限使用)[前往bettergi-scripts-tools部署](https://github.com/Kirito520Asuna/bettergi-scripts-tools)
|
||
## 核心思维导图
|
||
### 整体架构流程图
|
||
```mermaid
|
||
graph TD
|
||
A[主程序入口 main.js] --> B[初始化 init]
|
||
B --> C[加载工具模块]
|
||
C --> D[uid.js, ws.js, notice.js, campaignArea.js, activity.js]
|
||
D --> E[读取 manifest.json]
|
||
E --> F[检查是否返回主界面]
|
||
F --> G[toMainUi]
|
||
G --> H[执行主功能 main]
|
||
H --> I[每日委托检查]
|
||
I --> J[征讨领域检查]
|
||
J --> K[活动页面扫描]
|
||
K --> L[返回主界面]
|
||
L --> M[程序结束]
|
||
|
||
```
|
||
### 活动扫描核心流程
|
||
```mermaid
|
||
graph TD
|
||
A[activityMain函数] --> B[初始化配置]
|
||
B --> C[打开活动页面 F5]
|
||
C --> D[滚动到页面顶部]
|
||
D --> E[开始逐页扫描]
|
||
E --> F[OCR识别活动列表]
|
||
F --> G{是否有活动?}
|
||
G -->|否| H[结束扫描]
|
||
G -->|是| I[遍历当前页活动]
|
||
I --> J[白名单过滤]
|
||
J --> K{是否在白名单?}
|
||
K -->|是| L[继续处理]
|
||
K -->|否| M[根据关系模式判断]
|
||
M --> N{relationship=true?}
|
||
N -->|是| O[跳过]
|
||
N -->|否| L[继续处理]
|
||
L --> P[黑名单过滤]
|
||
P --> Q{是否在黑名单?}
|
||
Q -->|是| R[条件检测]
|
||
Q -->|否| S[点击活动]
|
||
R --> T{条件满足?}
|
||
T -->|是| U[跳过]
|
||
T -->|否| S[点击活动]
|
||
S --> V[OCR识别剩余时间]
|
||
V --> W[解析时间转小时]
|
||
W --> X[应用阈值过滤]
|
||
X --> Y[存储活动信息]
|
||
Y --> Z[向下滚动一页]
|
||
Z --> E
|
||
H --> AA[过滤符合条件活动]
|
||
AA --> BB[按剩余时间排序]
|
||
BB --> CC[发送通知]
|
||
CC --> DD[流程结束]
|
||
```
|
||
### 征讨领域提醒流程
|
||
```mermaid
|
||
graph TD
|
||
A[campaignAreaMain函数] --> B[获取当前星期]
|
||
B --> C{是否为提醒日?}
|
||
C -->|否| D[结束函数]
|
||
C -->|是| E[打开冒险之书 F1]
|
||
E --> F[点击秘境坐标]
|
||
F --> G[点击征讨领域坐标]
|
||
G --> H[OCR识别周次数]
|
||
H --> I{剩余次数>0?}
|
||
I -->|否| J[结束函数]
|
||
I -->|是| K[发送通知]
|
||
K --> L[流程结束]
|
||
|
||
```
|
||
### 通知发送机制
|
||
```mermaid
|
||
graph TD
|
||
A[sendNotice函数] --> B[检查通知类型配置]
|
||
B --> C[获取通知模式]
|
||
C --> D{BGI通知?}
|
||
D -->|是| E[notification.send]
|
||
C --> F{独立通知?}
|
||
F -->|是| G[wsUtil.sendText]
|
||
C --> H{两者都发送?}
|
||
H -->|是| E
|
||
H -->|是| G
|
||
E --> I[发送完成]
|
||
G --> I
|
||
I --> J[流程结束]
|
||
```
|
||
### 配置解析流程
|
||
```mermaid
|
||
graph TD
|
||
A[配置初始化] --> B[parseWhiteActivity]
|
||
A --> C[parseBlackActivity]
|
||
B --> D[白名单列表解析]
|
||
C --> E[黑名单条件解析]
|
||
D --> F[建立whiteActivityNameList]
|
||
E --> G[建立blackActivityMap]
|
||
F --> H[设置relationship逻辑]
|
||
G --> H
|
||
H --> I[配置完成]
|
||
```
|
||
### 核心组件依赖关系
|
||
```mermaid
|
||
graph LR
|
||
subgraph "工具模块"
|
||
A[activity.js - 活动处理]
|
||
B[notice.js - 通知发送]
|
||
C[campaignArea.js - 征讨领域]
|
||
D[ws.js - WebSocket通信]
|
||
E[uid.js - UID识别]
|
||
end
|
||
|
||
subgraph "主控模块"
|
||
F[main.js - 主入口]
|
||
G[settings.json - 配置]
|
||
end
|
||
|
||
F --> A
|
||
F --> B
|
||
F --> C
|
||
A --> B
|
||
A --> D
|
||
A --> E
|
||
C --> B
|
||
C --> E
|
||
G -.-> A
|
||
G -.-> B
|
||
G -.-> C
|
||
G -.-> D
|
||
|
||
```
|
||
### 逻辑流程
|
||
```mermaid
|
||
sequenceDiagram
|
||
autonumber
|
||
participant Config as 配置初始化
|
||
participant Parser as 解析器
|
||
participant ActivityMgr as 活动管理
|
||
participant OCRSvc as OCR 服务
|
||
participant Filter as 过滤决策
|
||
participant Notification as 通知服务
|
||
|
||
Config->>Parser: 读取 settings.whiteActivityNameList
|
||
Parser->>Parser: parseWhiteActivity(text)
|
||
Parser-->>Config: 返回 whiteActivityNameList
|
||
|
||
Config->>Parser: 读取 settings.blackActivity
|
||
Parser->>Parser: parseBlackActivity(text, excludeList)
|
||
Parser-->>Config: 返回 blackActivityMap
|
||
|
||
Note over ActivityMgr: 遍历所有候选活动
|
||
loop 每个候选活动
|
||
Note over ActivityMgr: 检查白名单匹配
|
||
alt 白名单不为空
|
||
ActivityMgr->>ActivityMgr: 检查活动名是否包含白名单关键词
|
||
alt 包含关键词
|
||
ActivityMgr-->>ActivityMgr: 标记为白名单活动
|
||
else 不包含关键词
|
||
alt relationship为false(或关系)
|
||
ActivityMgr-->>ActivityMgr: 继续处理
|
||
else relationship为true(与关系)
|
||
ActivityMgr-->>ActivityMgr: 跳过该活动
|
||
end
|
||
end
|
||
end
|
||
|
||
Note over ActivityMgr: 检查黑名单匹配
|
||
alt 黑名单不为空
|
||
ActivityMgr->>Filter: 是否匹配黑名单?
|
||
Filter->>Parser: getMapByKey(blackActivityMap, 活动名, reverseMatch=true)
|
||
Parser-->>Filter: 返回条件列表
|
||
Filter->>OCRSvc: 用 OCR 校验条件(如剩余时间、文本等)
|
||
OCRSvc-->>Filter: 返回条件满足情况
|
||
alt 任一条件满足
|
||
Filter-->>ActivityMgr: 跳过该活动
|
||
else 所有条件均不满足
|
||
Filter-->>ActivityMgr: 保留该活动
|
||
end
|
||
else 匹配但无条件
|
||
Filter-->>ActivityMgr: 直接跳过该活动
|
||
else 未匹配黑名单
|
||
Filter-->>ActivityMgr: 保留该活动
|
||
end
|
||
end
|
||
|
||
Note over ActivityMgr: 活动筛选完成后
|
||
ActivityMgr->>ActivityMgr: 根据whiteActivityNameList和relationship进行二次筛选
|
||
alt relationship为true(与关系)
|
||
ActivityMgr->>ActivityMgr: 同时满足剩余时间阈值和白名单条件
|
||
else relationship为false(或关系)
|
||
ActivityMgr->>ActivityMgr: 满足剩余时间阈值或白名单任一条件
|
||
end
|
||
ActivityMgr->>ActivityMgr: 检查剩余时间阈值
|
||
ActivityMgr->>Notification: 发送符合条件的活动通知
|
||
Notification-->> ActivityMgr: 通知发送完成
|
||
```
|
||
---
|
||
|
||
## 用户使用指南
|
||
|
||
### 快速开始
|
||
|
||
#### 1. 安装与配置
|
||
|
||
- 确保游戏分辨率为 **1920×1080**(推荐分辨率)
|
||
- 将脚本导入到 BetterGI 脚本管理器中
|
||
- 在脚本设置界面进行个性化配置
|
||
|
||
#### 2. 基础设置
|
||
|
||
在 [settings.json]() 中可以配置以下参数:
|
||
|
||
| 设置项 | 说明 | 默认值 | 开放 |
|
||
|:--------------------------|:----------------------------------------------|:------|:--:|
|
||
| `toMainUi` | 执行前是否自动返回游戏主界面 | true | v |
|
||
| `noticeType` | 通知模式(默认BGI通知-使用独立通知需要开启JS HTTP权限) | BGI通知 | v |
|
||
| `relationship` | 剩余时间与白名单启用`和`关系(默认`或`关系) | false | v |
|
||
| `whiteActivityNameList` | 白名单活动名称(用\|分隔) | 空(监控所有活动) | v |
|
||
| `blackActivity` | 黑名单活动名称(用|分隔)- 支持条件语法:活动名-条件1,条件2 | 空(无黑名单活动) | v |
|
||
| `notifyHoursThreshold` | 通知时间阈值(小时) | 8760(365天) | v |
|
||
| `activityKey` | 打开活动页面的快捷键 | F5 | v |
|
||
| `toTopCount` | 滑动到顶最大尝试次数 | 10 | x |
|
||
| `scrollPageCount` | 滑动次数/页 | 4 | x |
|
||
| `campaignAreaKey` | 打开征讨领域页面的快捷键 | F1 | v |
|
||
| `campaignAreaReminderDay` | 周本提醒日(0-6,0=周日,1=周一,2=周二,3=周三,4=周四,5=周五,6=周六) | 0 | v |
|
||
| `ws_proxy_url` | WebSocket代理URL(独立通知配置) | http://127.0.0.1:8081/ws-proxy/message/send | v |
|
||
| `ws_url` | WebSocket客户端 URL(独立通知配置) | ws://127.0.0.1:8080/ | v |
|
||
| `ws_token` | WebSocket客户端 token(独立通知配置) | 空 | v |
|
||
| `action` | 发送类型(私聊/群聊) (独立通知配置) | 私聊 | v |
|
||
| `send_id` | 发送ID(群号或QQ号,对应发送类型) (独立通知配置) | 空 | v |
|
||
| `at_list` | @某人列表使用,隔开(QQ号) (独立通知配置) | 空 | v |
|
||
|
||
---
|
||
|
||
### 使用流程
|
||
|
||
#### 自动模式(推荐)
|
||
|
||
1. 启动脚本后,程序会自动:
|
||
- 检测当前是否在游戏主界面
|
||
- 如未在主界面,自动返回主界面
|
||
- 按设定的快捷键打开活动页面
|
||
- 开始扫描所有活动
|
||
|
||
#### 手动模式
|
||
|
||
1. 关闭 `toMainUi` 选项
|
||
2. 确保游戏处于主界面状态
|
||
3. 启动脚本开始扫描
|
||
|
||
---
|
||
|
||
### 功能详解
|
||
|
||
#### 活动筛选
|
||
|
||
- **全部活动监控**:`whiteActivityNameList` 保持空值,监控所有有剩余时间的活动
|
||
- **指定活动监控**:填写活动关键词,如 `海灯节\|盛典`,只监控包含这些关键词的活动
|
||
- **黑名单过滤**:blackActivity 可以设置不想接收提醒的活动名称,多个活动用|分隔
|
||
- **条件黑名单过滤**:支持条件语法 活动名-条件1,条件2,只有当活动满足指定条件时才过滤
|
||
|
||
##### 使用示例
|
||
```text
|
||
普通黑名单: "活动A|活动B"
|
||
条件黑名单: "活动A-已完成|活动B-条件1,条件2"
|
||
混合使用: "活动A|活动C-已完成,已领取"
|
||
```
|
||
|
||
#### 时间通知机制
|
||
|
||
- 默认监控所有活动(`notifyHoursThreshold`=8760小时)
|
||
- 可设置阈值,如设置为24,则只通知剩余时间≤24小时的活动
|
||
- 即将结束(24小时内)的活动会在通知中标记 `<即将结束>`
|
||
|
||
#### 逻辑关系配置
|
||
|
||
- **`relationship` 为 `false`**(默认):满足"剩余时间阈值"或"白名单活动"任一条件即发送通知
|
||
- **`relationship` 为 `true`**:必须同时满足"剩余时间阈值"和"白名单活动"两个条件才发送通知
|
||
|
||
#### 智能防重复
|
||
|
||
- 自动识别已扫描过的活动页面
|
||
- 防止因页面滚动不准确造成的重复识别
|
||
- 自动判断是否已滚动到页面底部
|
||
|
||
---
|
||
|
||
### 独立通知配置(0.0.4版本新增)
|
||
|
||
#### 配置项说明
|
||
|
||
- **`noticeType`**:
|
||
- `BGI通知`: 使用 BetterGI 内置通知
|
||
- `独立通知`: 通过 WebSocket 发送通知
|
||
- `独立通知和BGI通知`: 同时使用两种方式
|
||
|
||
- **WebSocket 配置**:
|
||
- `ws_proxy_url`: WebSocket 代理 URL,默认为 `http://127.0.0.1:8081/ws-proxy/message/send`
|
||
- `ws_url`: WebSocket 客户端 URL,默认为 `ws://127.0.0.1:8080/`
|
||
- `ws_token`: WebSocket 客户端认证令牌(可选)
|
||
|
||
- **发送配置**:
|
||
- `action`: 发送类型,可选 `私聊` 或 `群聊`
|
||
- `send_id`: 根据 `action` 类型填写群号或 QQ 号
|
||
- `at_list`: @ 某人列表,使用逗号分隔多个 QQ 号
|
||
|
||
#### 使用要求
|
||
|
||
1. **开启权限**: 需要开启 JS HTTP 权限才能使用独立通知功能
|
||
2. **配置服务**: 需要搭建相应的 WebSocket 服务和代理服务器
|
||
3. **网络连接**: 确保能够连接到配置的 WebSocket 服务器
|
||
|
||
#### 配置示例
|
||
|
||
```json
|
||
{
|
||
"noticeType": "独立通知",
|
||
"ws_proxy_url": "http://127.0.0.1:8081/bgi/ws-proxy/message/send",
|
||
"ws_url": "ws://127.0.0.1:8080/",
|
||
"action": "群聊",
|
||
"send_id": "123456789",
|
||
"at_list": "987654321,111222333"
|
||
}
|
||
```
|
||
|
||
### 部署 [bettergi-scripts-tools](https://github.com/Kirito520Asuna/bettergi-scripts-tools)
|
||
|
||
#### 1.windows exe 直接运行
|
||
前往 [release](https://github.com/Kirito520Asuna/bettergi-scripts-tools/releases) 下载 带windows的zip包解压运行.exe文件即可
|
||
#### 2.java
|
||
前往 [release](https://github.com/Kirito520Asuna/bettergi-scripts-tools/releases) 下载 jar包
|
||
```shell
|
||
java -jar xxxx.jar
|
||
```
|
||
#### 3.部署docker
|
||
```shell
|
||
docker pull ghcr.io/kirito520asuna/bettergi-scripts-tools:latest
|
||
docker run -d -p 8081:8081 -v /path/to/application-prod.yml:/app/application-prod.yml --name bettergi-scripts-tools ghcr.io/kirito520asuna/bettergi-scripts-tools:latest
|
||
```
|
||
|
||
---
|
||
|
||
### 注意事项
|
||
|
||
#### 使用环境要求
|
||
|
||
- ✅ 游戏分辨率为 1920×1080(最佳兼容性)
|
||
- ✅ 游戏处于前台运行状态
|
||
- ✅ 活动页面可通过设置的快捷键正常打开
|
||
|
||
#### 运行期间注意事项
|
||
|
||
- 🚫 运行期间请勿手动操作鼠标
|
||
- 🚫 避免切换窗口或最小化游戏
|
||
- ⚠️ 如遇异常可重新启动脚本
|
||
|
||
---
|
||
|
||
### 高级配置
|
||
|
||
#### 自定义快捷键
|
||
|
||
如活动页面不是F5打开,可在 `activityKey` 中修改为对应按键。
|
||
如冒险之书页面不是F1打开,可在 `campaignAreaKey` 中修改为对应按键。
|
||
|
||
#### 时间阈值设置
|
||
|
||
根据个人需求设置 `notifyHoursThreshold`:
|
||
|
||
- 24:只关注24小时内结束的活动
|
||
- 168:关注一周内结束的活动
|
||
- 720:关注一个月内结束的活动
|
||
|
||
#### 独立通知配置
|
||
|
||
如果需要使用独立通知功能(如发送到QQ群聊),需要:
|
||
|
||
1. 开启JS HTTP权限
|
||
2. 配置WebSocket相关参数
|
||
3. 设置发送类型和ID
|
||
|
||
---
|
||
|
||
### 输出示例
|
||
|
||
通知消息格式如下:
|
||
|
||
```
|
||
原神活动剩余时间提醒:
|
||
> 海灯节庆典 剩余时间:3天14小时<还剩 86 小时>
|
||
> 风花节活动 剩余时间:1天5小时<还剩 29 小时><即将结束>
|
||
```
|
||
|
||
---
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
ActivitySwitchNotice/
|
||
├── utils/
|
||
│ ├── activity.js # 核心活动处理逻辑
|
||
│ ├── campaignArea.js # 征讨领域提醒功能
|
||
│ ├── notice.js # 通知发送功能
|
||
│ └── ws.js # WebSocket通知功能
|
||
├── main.js # 主入口文件
|
||
├── manifest.json # 插件配置文件
|
||
├── settings.json # 用户设置界面定义
|
||
└── README.md # 说明文档
|
||
```
|
||
|
||
---
|
||
|
||
## 核心模块
|
||
|
||
### `activity.js` - 活动处理核心
|
||
|
||
主要包含以下功能函数:
|
||
|
||
- `scrollPage()` - 页面滚动基础函数
|
||
- `scrollPagesByActivity()` - 按页滚动活动列表
|
||
- `scrollPagesByActivityToTop()` - 滚动到活动列表顶部
|
||
- `parseRemainingTimeToHours()` - 解析剩余时间文本为小时数
|
||
- `OcrKey()` - OCR识别剩余时间
|
||
- `activityMain()` - 主流程控制函数
|
||
|
||
### `notice.js` - 通知模块
|
||
|
||
- `sendNotice()` - 发送活动提醒通知,按剩余时间排序
|
||
- `sendText()` - 发送普通通知
|
||
|
||
### `campaignArea.js` - 征讨领域模块
|
||
|
||
- `ocrWeeklyCount()` - OCR识别征讨领域周次数
|
||
- `getDayOfWeek()` - 获取当前星期信息
|
||
- `campaignAreaMain()` - 征讨领域提醒主函数
|
||
|
||
### `ws.js` - WebSocket通知模块
|
||
|
||
- `send()` - 发送WebSocket消息
|
||
- `sendText()` - 发送文本消息
|
||
|
||
---
|
||
|
||
## 配置选项
|
||
|
||
在 `settings.json` 中可配置以下参数:
|
||
|
||
| 配置项 | 类型 | 说明 |
|
||
|:--------------------------|:-------:|:----------------------------------------------|
|
||
| `toMainUi` | Boolean | 是否先返回主界面再执行 |
|
||
| `noticeType` | String | 通知模式(BGI通知/独立通知/两者都发送) |
|
||
| `relationship` | Boolean | 剩余时间与白名单启用`和`关系(默认`或`关系) |
|
||
| `whiteActivityNameList` | String | 白名单活动名称(用\|分隔) |
|
||
| `blackActivity` | String | 黑名单活动名称(用\|分隔)- 支持条件语法:活动名-条件1,条件2 |
|
||
| `notifyHoursThreshold` | Number | 通知阈值(小时) |
|
||
| `activityKey` | String | 打开活动页面的快捷键 |
|
||
| `toTopCount` | Number | 滑动到顶最大尝试次数 |
|
||
| `scrollPageCount` | Number | 滑动次数/页 |
|
||
| `campaignAreaKey` | String | 打开冒险之书页面的快捷键 |
|
||
| `campaignAreaReminderDay` | Number | 周本提醒日(0-6,0=周日,1=周一,2=周二,3=周三,4=周四,5=周五,6=周六) |
|
||
| `ws_proxy_url` | String | WebSocket代理URL(独立通知配置) |
|
||
| `ws_url` | String | WebSocket客户端 URL(独立通知配置) |
|
||
| `ws_token` | String | WebSocket客户端 token(独立通知配置) |
|
||
| `action` | String | 发送类型(私聊/群聊)(独立通知配置) |
|
||
| `send_id` | String | 发送ID(群号或QQ号,对应发送类型) (独立通知配置) |
|
||
| `at_list` | String | @某人列表使用,隔开(QQ号) (独立通知配置) |
|
||
|
||
---
|
||
|
||
## 工作原理
|
||
|
||
1. 自动返回游戏主界面
|
||
2. 检查是否为设置的提醒日(默认周日),如果是则执行征讨领域提醒功能
|
||
3. 按配置快捷键打开活动页面
|
||
4. 滚动到活动列表顶部
|
||
5. 逐页扫描所有活动
|
||
6. OCR识别每个活动的剩余时间
|
||
7. 解析时间为小时数并过滤(包括黑名单过滤)
|
||
8. 发送符合条件的活动提醒
|
||
|
||
---
|
||
|
||
## 注意事项
|
||
|
||
- 请确保游戏分辨率为1920×1080以获得最佳效果
|
||
- 脚本运行期间请勿操作鼠标
|
||
- 某些特殊活动可能无法正确识别剩余时间
|
||
- 建议在游戏空闲时运行此脚本
|
||
|
||
---
|
||
|
||
## 版本历史
|
||
|
||
### 0.1.0 (2026-02-01)
|
||
- 新增 新活动通知(存储活动名称列表-历史对比)
|
||
### 0.0.8 (2026-01-22)
|
||
- 新增 地图识别任务提醒 如:
|
||
|
||

|
||

|
||
### 0.0.7 (2026-01-19)
|
||
- 新增每日委托提醒
|
||
### 0.0.6 (2026-01-06)
|
||
- **功能优化**:新增识别uid通知提醒
|
||
实例:
|
||

|
||
|
||
### 0.0.5 (2026-01-04)
|
||
|
||
- **性能优化**:优化滚动到顶部算法,减少页面滚动次数,提升初始化效率
|
||
- **功能增强**:新增条件黑名单过滤机制,支持基于活动状态的动态过滤策略
|
||
- **代码重构**:新增 `parseBlackActivity` 函数,实现黑名单配置的结构化解析
|
||
- **架构改进**:重构黑名单匹配逻辑,引入条件匹配引擎,支持多条件复合判断
|
||
- **数据结构优化**:引入 `blackActivityMap` 配置项,使用 Map 数据结构提升查找性能
|
||
- **逻辑优化**:增强活动过滤算法,集成条件匹配验证机制
|
||
- **初始化流程**:重构配置加载流程,新增 [init]() 函数统一处理配置项初始化
|
||
- **文档完善**:更新配置项文档,补充条件黑名单语法说明
|
||
|
||
### 0.0.4 (2026-01-01)
|
||
|
||
- 新增 独立通知配置功能,支持通过 WebSocket 发送通知
|
||
- 新增 `ws.js` 模块,实现 WebSocket 通知功能
|
||
- 新增 `noticeType` 配置选项,用于选择通知模式
|
||
- 新增 `ws_proxy_url`、`ws_url`、`ws_token` 配置选项
|
||
- 新增 `action`、`send_id`、`at_list` 配置选项用于发送设置
|
||
|
||
### 0.0.3 (2025-12-29)
|
||
|
||
- 修复 修复了活动过滤逻辑问题,将`activityNameList`更改为`whiteActivityNameList`以保持一致
|
||
- 新增 黑名单与白名单的互斥过滤机制,黑名单中剔除白名单
|
||
- 新增 在配置中增加了`relationship`参数,用于控制剩余时间与白名单活动的逻辑关系
|
||
- 新增 支持剩余时间和白名单的"与"关系和"或"关系配置
|
||
- 新增 标记界面显示 `已完成` 的活动
|
||
|
||
### 0.0.2 (2025-12-22)
|
||
|
||
- 新增 征讨领域周次数提醒功能
|
||
- 新增 [campaignArea.js]() 模块,包含征讨领域相关功能
|
||
- 新增 `campaignAreaKey` 配置选项,用于自定义冒险之书页面快捷键
|
||
- 新增 `campaignAreaReminderDay` 配置选项,用于配置提醒日
|
||
- 改进 增强滚动到顶部功能的稳定性
|
||
- 新增 活动黑名单过滤功能,支持通过 `blackActivityNameList` 配置项排除不关心的活动
|
||
- 新增 特殊活动时间格式支持,针对"砺行修远"等活动提供周数显示
|
||
- 新增 额外OCR识别支持,可识别特定活动的附加信息(如"本周进度")
|
||
- 改进 活动过滤逻辑,增强黑名单匹配准确性
|
||
- 改进 通知显示格式,增加活动描述信息展示
|
||
- 修复 若干已知问题,提升脚本稳定性
|
||
|
||
### 0.0.1 (2025-12-21)
|
||
|
||
- 新增 活动期限检测与通知功能
|
||
- 新增 OCR识别活动列表和剩余时间
|
||
- 新增 自动滚动浏览所有活动页面
|
||
- 新增 智能解析剩余时间(支持"22天14小时"等格式)
|
||
- 新增 可配置的通知阈值功能
|
||
- 新增 指定特定活动监控功能
|
||
- 新增 防重复检测机制
|
||
- 新增 异常处理和错误恢复机制
|
||
|
||
---
|
||
|
||
## 其它
|
||
|
||
作者:云端客
|
||
脚本反馈邮箱:doutianmianxia@qq.com |