Compare commits

...

12 Commits

Author SHA1 Message Date
heziziziscool
792452c048 Revert "revert 提交到main"
This reverts commit 662eb0bc7f.
2025-02-03 19:00:01 +08:00
heziziziscool
662eb0bc7f revert 提交到main 2025-02-03 18:57:40 +08:00
heziziziscool
94a9bdbb93 Revert "- 新增Server酱与企业微信群机器人推送代理成功渠道。"
This reverts commit df96183f42.
2025-02-03 18:54:09 +08:00
heziziziscool
df96183f42 - 新增Server酱与企业微信群机器人推送代理成功渠道。 2025-02-03 18:49:46 +08:00
DLmaster
dbdc2144b7 Merge branch 'dev' 2025-02-02 09:26:20 +08:00
DLmaster
e34106f857 Merge branch 'fix_inf_dev' into dev 2025-02-02 01:20:01 +08:00
DLmaster
c3c07804cd fix(core): 修复自定义基建无法正常使用的问题
feat(core): 添加用户每日代理次数上限功能
2025-02-02 01:19:46 +08:00
DLmaster
0b5ac6bb6e Merge branch 'dev' 2025-01-31 22:03:03 +08:00
DLmaster
ea87eefb9b doc: 修复部分图片位置 2025-01-31 22:02:51 +08:00
DLmaster
20dc4656dc Merge branch 'dev' 2025-01-31 21:52:57 +08:00
DLmaster
3f0f1612e3 doc: README同步至v4.2.2版本 2025-01-31 21:52:31 +08:00
DLmaster
e92b6ecfe6 fix(maa): 修正人工排查文案 2025-01-29 10:24:03 +08:00
5 changed files with 100 additions and 65 deletions

View File

@@ -32,7 +32,8 @@ MAA多账号管理与自动化软件
### 优势
- **节省运行开销:** 只需要一份MAA软件与一个模拟器无需多开就能完成多账号代理羸弱的电脑也能代理日常。
- **自定义空间大:** 依靠高级用户配置模式支持MAA几乎所有设置选项自定义同时保留对模拟器多开的支持
- **自定义空间大:** 依靠高级用户配置模式支持MAA几乎所有设置选项自定义支持模拟器多开。
- **调度方法自由:** 通过调度队列功能自由实现MAA多开等多种调度方式。
- **一键代理无忧:** 无须中途手动修改MAA配置将繁琐交给AUTO_MAA把游戏留给自己。
- **代理结果复核:** 通过人工排查功能核实各用户代理情况,堵住自动代理的最后一丝风险。
@@ -44,8 +45,7 @@ MAA多账号管理与自动化软件
- **使用:** AUTO_MAA使用者可以按自己的意愿自由使用本软件。依据GPL对于由此可能产生的损失AUTO_MAA项目组不负任何责任。
- **分发:** AUTO_MAA允许任何人自由分发本软件包括进行商业活动牟利。若为直接分发本软件必须遵循GPL向接收者提供本软件项目地址、完整的软件源码与GPL协议原文若为修改软件后进行分发必须遵循GPL向接收者提供本软件项目地址、修改前的完整软件源码副本与GPL协议原文违反者可能会被追究法律责任。
- **传播:** AUTO_MAA原则上允许传播者自由传播本软件但无论在何种传播过程中不得删除项目作者与开发者所留版权声明不得隐瞒项目作者与相关开发者的存在。由于软件性质项目组不希望发现任何人在明日方舟官方媒体包括官方媒体账号与森空岛社区等或明日方舟游戏相关内容包括同好群、线下活动与游戏内容讨论等下提及AUTO_MAA或MAA希望各位理解。
- **衍生:** AUTO_MAA允许任何人对软件本体或软件部分代码进行二次开发或利用。但依据GPL相关成果也必须使用GPL开源。
- **授权:** 如果希望在使用AUTO_MAA的相关成果后仍保持自己的项目闭源请在Issues中说明来意。得到项目组认可后我们可以提供另一份使用不同协议的代码此协议主要内容如下被授权者可以自由使用该代码并维持闭源被授权者必须定期为AUTO_MAA作出贡献。
- **衍生:** AUTO_MAA允许任何人对软件本体或软件部分代码进行二次开发或利用。但依据GPL相关成果再次分发时也必须使用GPL或兼容的协议开源。
- **贡献:** 不论是直接参与软件的维护编写或是撰写文档、测试、反馈BUG、给出建议、参与讨论都为AUTO_MAA项目的发展完善做出了不可忽视的贡献。项目组提倡各位贡献者遵照GitHub开源社区惯例发布Issues参与项目。避免私信或私发邮件安全性漏洞或敏感问题除外以帮助更多用户。
以上细则是本项目对GPL的相关补充与强调。未提及的以GPL为准发生冲突的以本细则为准。如有不清楚的部分请发Issues询问。若发生纠纷相关内容也没有在Issues上提及的项目组拥有最终解释权。
@@ -67,13 +67,11 @@ MAA多账号管理与自动化软件
### 下载MAA
- 什么是MAA [官网](https://maa.plus/)/[GitHub](https://github.com/MaaAssistantArknights/MaaAssistantArknights)
- MAA下载地址 [GitHub下载](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)
### 安装MAA
- 将MAA压缩包解压至任意普通文件夹即可。
- 若为首次安装MAA请双击`MAA.exe`启动MAA程序以生成MAA配置文件。
### 下载AUTO_MAA [![](https://img.shields.io/github/downloads/DLmaster361/AUTO_MAA/total?color=66ccff)](https://github.com/DLmaster361/AUTO_MAA/releases)
@@ -95,58 +93,46 @@ MAA多账号管理与自动化软件
首次启动时会要求设置管理密钥。
管理密钥是解密用户密码的唯一凭证,与数据库绑定。
管理密钥是解密用户密码的唯一凭证,与用户数据库绑定。
密钥丢失或data/key/目录下任一文件损坏都将导致解密无法正常进行。
本项目采用自主开发的混合加密模式项目组也无法找回您的管理密钥或修复data/key/目录下的文件。
如果不幸的事发生建议您删除data/key/目录与data/data.db文件后重新录入信息。
如果不幸的事发生建议您删除data/key目录与config目录后重新录入信息。
```
### 配置信息
#### 设置MAA
#### 设置脚本实例
1. 通过`浏览`绑定MAA后单击`设置MAA`进行MAA全局设置
2. 在打开的MAA界面完成`性能设置``游戏设置``连接设置``启动设置``界面设置``软件更新`等基本配置以及代理任务的详细配置。
3. 完成基本配置后关闭MAA页面AUTO_MAA会自动保存您的配置。
1. 单击`+`并选择`MAA`以添加MAA脚本实例
2.`MAA目录`选项卡中通过`选择文件夹`打开MAA软件目录以绑定MAA。
3. `MAA全局配置`选项卡中通过`设置`进行MAA全局设置。在打开的MAA界面完成`性能设置``游戏设置``连接设置``启动设置``界面设置``软件更新`等基本配置以及代理任务的详细配置。
4. 完成基本配置后关闭MAA页面AUTO_MAA会自动保存您的配置。
- 注意在MAA的设置过程中若MAA要求`立刻重启应用更改`,请选择`稍后`。否则MAA重启后的一切更改都不会被程序记录。
- 特别的,您需要确保自己:
- 特别的,在设置MAA过程中您需要确保自己:
-`切换配置`选项卡中选择了`Default`项。
- 取消勾选`开机自启动MAA`
- 配置自己模拟器所在的位置并根据实际情况填写`等待模拟器启动时间`建议预留10s以防意外
- 如果是模拟器多开用户,还需要填写`附加命令`,具体填写值参见多开模拟器对应快捷方式路径(如`-v 1`)。
![MAA配置](https://github.com/DLmaster361/AUTO_MAA/blob/main/resources/images/README/MAA配置.png "MAA配置")
#### 设置AUTO_MAA
本项目已基本完成GUI开发您可以直接在设置页配置AUTO_MAA相关信息页面简介如下
- `MAA路径`该项无法直接编辑仅用于展示当前程序所绑定MAA的路径。
- `浏览`选择MAA文件夹。
- `设置MAA`编辑MAA全局配置具体使用方法参见前文。
- `日常限制`执行自动代理的日常部分时的超时阈值当MAA日志无变化时间超过阈值时视为超时。
- `剿灭限制`执行自动代理的剿灭部分时的超时阈值当MAA日志无变化时间超过阈值时视为超时。
- `运行失败重试次数上限`:对于每一用户,若超过该次数限制仍未完成代理,视为代理失败。
- `开机自动启动AUTO_MAA`实现AUTO_MAA的自启动。
- `AUTO_MAA启动时禁止电脑休眠`:仅阻止电脑自动休眠,不会影响屏幕是否熄灭。
- `启动AUTO_MAA后直接代理`在AUTO_MAA启动后立即执行代理任务。
- `通过邮件通知结果`在AUTO_MAA完成任务后将结果发送至用户指定邮箱。
- `检查版本更新`从GitHub镜像源获取版本更新信息并调起更新器完成程序更新更新器已支持多个代理地址。
- `修改管理密钥`:修改管理密钥,当用户列表中无用户时,将跳过验证旧管理密钥。
#### 设置用户配置
本项目已基本完成GUI开发您可以直接在用户管理页配置用户相关信息,页面简介如下:
- `新建``删除`:新建一个用户到当前用户配置列表、删除当前所选第一行所对应的用户。
- `转为高级/简洁`:将当前所选第一行所对应的用户转为高级/简洁配置模式
每一个脚本实例都有独立的用户数据库,您可以直接在`用户列表`选项卡配置用户相关信息,页面简介如下:
- `新建用户``删除用户`:新建一个用户到当前用户配置列表、删除当前所选第一行所对应的用户。
- `向上移动``向下移动`:移动用户位置,用户位置即代理顺序
- `模式转换`:将当前所选第一行所对应的用户转为高级/简洁配置模式。
- `用户选项配置`:选择用户与对应配置项目,执行对应配置流程。
- `自定义基建`:选择自定义基建配置文件。
- `日常``剿灭`打开MAA界面进行设置设置方法与MAA全局配置相同。
- `显示密码`:输入管理密钥以显示用户密码,仅当管理密钥正确时能够修改`密码栏目`
- `刷新`:清除临时保存的管理密钥。
- `简洁用户配置列表`仅支持核心代理选项的设置其它设置选项沿用MAA的全局设置部分代理核心功能选项由程序托管。
- `高级用户配置列表`:支持几乎所有代理选项的设置,通过`修改配置`进行MAA自定义仅部分代理核心功能选项由程序托管。
- `用户配置列表栏目`详解如下:
- `高级用户配置列表`:支持几乎所有代理选项的设置,通过`用户选项配置`进行MAA自定义仅部分代理核心功能选项由程序托管。
- `用户配置列表栏目`详解如下:
- `用户名`:展示在执行界面的用户名,用于区分不同用户。
- `账号ID`MAA进行账号切换所需的凭据官服用户请输入手机号码、B服请输入B站ID。
- `服务器`当前支持官服、B服。
@@ -167,42 +153,45 @@ MAA多账号管理与自动化软件
![gameid](https://github.com/DLmaster361/AUTO_MAA/blob/main/resources/images/README/gameid.png "gameid")
#### 设置调度队列
- 单个调度队列可包含至多10个定时与至多10个任务实例。
- 调度队列状态为关闭时,将不会定时启动该调度队列,但仍能在主调度台直接运行该调度队列。
- 同一调度队列内任务实例被依次挨个调起运行,非同一调度队列内的不同任务实例可被同时调起。
- 同一时间内,任何脚本实例或调度队列都不会被重复调起,若某一任务运行时发现同一任务已在运行,将自动跳过。
#### 设置AUTO_MAA
- 详见软件中对应选项卡的注解。
## 运行代理任务
### 直接运行
-执行页单击`立即执行`直接运行
-`调度中心``主调度台`选择对应任务与`自动代理`模式,单击`开始任务`即可开始代理
### 定时运行
- 在执行页的`定时执行`栏设置时间。
- 保持软件打开,软件会在设定的时间自动运行。
- 将调度队列状态设为开启,并在`定时`选项卡设置定时启动时间。
- 保持软件开启,软件会在设定的时间自动运行。
## 人工排查代理结果
### 直接开始人工排查
-执行页单击`开始排查`启动排查进程
-`调度中心``主调度台`选择对应任务与`人工排查`模式,单击`开始任务`即可开始人工排查
- 软件将调起MAA依次登录各用户的账号。
- 完成PRTS登录后请人工检查代理情况可以手动完成未代理的任务。
- 在对话框中单击对应账号的代理情况。
- 结束人工排查后,相应排查情况将被写入用户管理页的`备注栏目`
---
# 关于
## 未来开发方向
## 项目开发情况
- [ ] 尝试接入更多开源社区成果
- [ ] 支持对MAA运行状况的进一步识别
- [x] 添加更多通知手段
- [ ] GUI界面美化
可在[《AUTO_MAA开发者协作文档》](https://docs.qq.com/aio/DQ3Z5eHNxdmxFQmZX)的`开发任务`页面中查看开发进度。
## 贡献者
@@ -224,7 +213,7 @@ MAA多账号管理与自动化软件
欢迎加入AUTO_MAA项目组欢迎反馈bug
- QQ群[957750551](https://qm.qq.com/cgi-bin/qm/qr?k=EET-OL_o52KPlDLEmbzaNkKUXuyQ4WZY&jump_from=webapi&authKey=6NxGwEu9JAOLHqfdEmNfrZy4tUvC/3ar2j5+Go7Hgf3j+ntAK1VS6SUOLOjYVKTt)
- QQ群[957750551](https://qm.qq.com/q/bd9fISNoME)
---

View File

@@ -39,6 +39,7 @@ from qfluentwidgets import (
FolderValidator,
BoolValidator,
RangeValidator,
qconfig,
)
@@ -125,6 +126,15 @@ class AppConfig:
self.queue_config = QueueConfig()
self.maa_config = MaaConfig()
config_list = self.search_config()
for config in config_list:
if config[0] == "Maa":
qconfig.load(config[1], self.maa_config)
self.maa_config.save()
elif config[0] == "Queue":
qconfig.load(config[1], self.queue_config)
self.queue_config.save()
logger.info("配置类初始化完成")
def init_database(self, mode: str) -> None:
@@ -378,6 +388,22 @@ class AppConfig:
db.close()
logger.info("数据文件版本更新完成")
def search_config(self) -> list:
"""搜索所有子配置文件"""
config_list = []
if (self.app_path / "config/MaaConfig").exists():
for subdir in (self.app_path / "config/MaaConfig").iterdir():
if subdir.is_dir():
config_list.append(["Maa", subdir / "config.json"])
if (self.app_path / "config/QueueConfig").exists():
for json_file in (self.app_path / "config/QueueConfig").glob("*.json"):
config_list.append(["Queue", json_file])
return config_list
def open_database(self, mode: str, index: str = None) -> None:
"""打开数据库"""
@@ -459,6 +485,7 @@ class AppConfig:
self.maa_config.set(self.maa_config.MaaSet_Name, "")
self.maa_config.set(self.maa_config.MaaSet_Path, ".")
self.maa_config.set(self.maa_config.RunSet_ProxyTimesLimit, 0)
self.maa_config.set(self.maa_config.RunSet_AnnihilationTimeLimit, 40)
self.maa_config.set(self.maa_config.RunSet_RoutineTimeLimit, 10)
self.maa_config.set(self.maa_config.RunSet_RunTimesLimit, 3)
@@ -587,6 +614,9 @@ class MaaConfig(QConfig):
MaaSet_Name = ConfigItem("MaaSet", "Name", "")
MaaSet_Path = ConfigItem("MaaSet", "Path", ".", FolderValidator())
RunSet_ProxyTimesLimit = RangeConfigItem(
"RunSet", "ProxyTimesLimit", 0, RangeValidator(0, 1024)
)
RunSet_AnnihilationTimeLimit = RangeConfigItem(
"RunSet", "AnnihilationTimeLimit", 40, RangeValidator(1, 1024)
)

View File

@@ -137,8 +137,16 @@ class MaaManager(QObject):
if self.isInterruptionRequested:
break
user[1] = "运行"
self.update_user_list.emit(user_list)
if (
self.set["RunSet"]["ProxyTimesLimit"] == 0
or self.data[user[2]][14] < self.set["RunSet"]["ProxyTimesLimit"]
):
user[1] = "运行"
self.update_user_list.emit(user_list)
else:
user[1] = "跳过"
self.update_user_list.emit(user_list)
continue
# 初始化代理情况记录和模式替换记录
run_book = [False for _ in range(2)]
@@ -400,7 +408,7 @@ class MaaManager(QObject):
if run_book[0] and not self.isInterruptionRequested:
if self.push_question(
"操作提示", "请检查用户代理情况,是否将该用户标记为异常"
"操作提示", "请检查用户代理情况,该用户是否正确完成代理任务"
):
run_book[1] = True
@@ -851,7 +859,10 @@ class MaaManager(QObject):
] = "False" # 自定义基建配置文件只读
data["Configurations"]["Default"][
"Infrast.CustomInfrastFile"
] = f"{self.config_path}/simple/{self.data[index][16]}/infrastructure/infrastructure.json" # 自定义基建配置文件地址
] = str(
self.config_path
/ f"simple/{self.data[index][16]}/infrastructure/infrastructure.json"
) # 自定义基建配置文件地址
# 人工排查配置
elif "人工排查" in mode:

View File

@@ -578,6 +578,14 @@ class MaaSettingBox(QWidget):
widget = QWidget()
Layout = QVBoxLayout(widget)
self.ProxyTimesLimit = SpinBoxSettingCard(
(0, 1024),
FluentIcon.PAGE_RIGHT,
"用户单日代理次数上限",
"当用户本日代理成功次数超过该阈值时跳过代理阈值为“0”时视为无代理次数上限",
Config.maa_config.RunSet_ProxyTimesLimit,
)
self.AnnihilationTimeLimit = SpinBoxSettingCard(
(1, 1024),
FluentIcon.PAGE_RIGHT,
@@ -602,6 +610,7 @@ class MaaSettingBox(QWidget):
Config.maa_config.RunSet_RunTimesLimit,
)
Layout.addWidget(self.ProxyTimesLimit)
Layout.addWidget(self.AnnihilationTimeLimit)
Layout.addWidget(self.RoutineTimeLimit)
Layout.addWidget(self.RunTimesLimit)
@@ -707,7 +716,7 @@ class MaaSettingBox(QWidget):
shutil.copy(
file_path,
Config.app_path
/ f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure",
/ f"config/MaaConfig/{self.name}/simple/{choice.input[0].currentIndex()}/infrastructure/infrastructure.json",
)
else:
logger.warning("未选择自定义基建文件")
@@ -963,11 +972,9 @@ class MaaSettingBox(QWidget):
elif j == 5:
curdate = server_date()
if curdate != value:
item = QTableWidgetItem("今日未代理")
item = QTableWidgetItem("未代理")
else:
item = QTableWidgetItem(
f"今日已代理{data_simple[i][14]}"
)
item = QTableWidgetItem(f"已代理{data_simple[i][14]}")
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
elif j == 12:
if Config.PASSWORD == "":
@@ -1032,11 +1039,9 @@ class MaaSettingBox(QWidget):
elif j == 5:
curdate = server_date()
if curdate != value:
item = QTableWidgetItem("今日未代理")
item = QTableWidgetItem("未代理")
else:
item = QTableWidgetItem(
f"今日已代理{data_beta[i][14]}"
)
item = QTableWidgetItem(f"已代理{data_beta[i][14]}")
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
elif j == 12:
if Config.PASSWORD == "":

View File

@@ -1,7 +1,7 @@
{
"main_version": "4.2.2.0",
"main_version": "4.2.2.1",
"updater_version": "1.1.1.0",
"announcement": "\n## 新增功能\n- 调度队列上线支持MAA多开 #12\n- 公告系统上线\n## 修复BUG\n- 修复手机号码不全时引发的混乱\n- 添加了一堆BUG确信\n## 程序优化\n- 界面重构,引入`QFluentWidgets`美化界面",
"announcement": "\n## 新增功能\n- 添加用户每日代理次数上限功能 #15\n## 修复BUG\n- 修复自定义基建无法正常使用的问题\n- 修正人工排查文案\n## 程序优化\n- 无",
"proxy_list": [
"",
"https://gitproxy.click/",