chore(core): 升级日志监看方法

This commit is contained in:
DLmaster
2025-02-14 16:27:18 +08:00
parent 8936b1c41d
commit 292e7f51e0
8 changed files with 184 additions and 195 deletions

View File

@@ -31,8 +31,8 @@ __license__ = "GPL-3.0 license"
from .config import AppConfig, QueueConfig, MaaConfig, Config from .config import AppConfig, QueueConfig, MaaConfig, Config
from .main_info_bar import MainInfoBar from .main_info_bar import MainInfoBar
from .task_manager import Task, Task_manager from .task_manager import Task, TaskManager
from .timer import Main_timer from .timer import MainTimer
__all__ = [ __all__ = [
"AppConfig", "AppConfig",
@@ -41,6 +41,6 @@ __all__ = [
"MaaConfig", "MaaConfig",
"MainInfoBar", "MainInfoBar",
"Task", "Task",
"Task_manager", "TaskManager",
"Main_timer", "MainTimer",
] ]

View File

@@ -147,7 +147,7 @@ class Task(QThread):
) )
) )
self.task.accomplish.connect( self.task.accomplish.connect(
lambda log: self.save_log(self.task_dict[i][0], log) lambda log: self.task_accomplish(self.task_dict[i][0], log)
) )
self.task.run() self.task.run()
@@ -173,13 +173,14 @@ class Task(QThread):
return member_dict return member_dict
def save_log(self, name: str, log: dict): def task_accomplish(self, name: str, log: dict):
"""保存保存任务结果""" """保存保存任务结果"""
self.logs.append([name, log]) self.logs.append([name, log])
self.task.deleteLater()
class TaskManager(QObject): class _TaskManager(QObject):
"""业务调度器""" """业务调度器"""
create_gui = Signal(Task) create_gui = Signal(Task)
@@ -187,7 +188,7 @@ class TaskManager(QObject):
push_info_bar = Signal(str, str, str, int) push_info_bar = Signal(str, str, str, int)
def __init__(self): def __init__(self):
super(TaskManager, self).__init__() super(_TaskManager, self).__init__()
self.task_dict: Dict[str, Task] = {} self.task_dict: Dict[str, Task] = {}
@@ -252,6 +253,8 @@ class TaskManager(QObject):
logger.info(f"任务结束:{name}") logger.info(f"任务结束:{name}")
MainInfoBar.push_info_bar("info", "任务结束", name, 3000) MainInfoBar.push_info_bar("info", "任务结束", name, 3000)
self.task_dict[name].deleteLater()
if len(logs) > 0: if len(logs) > 0:
time = logs[0][1]["Time"] time = logs[0][1]["Time"]
history = "" history = ""
@@ -290,4 +293,4 @@ class TaskManager(QObject):
self.task_dict[name].question_response.emit(bool(choice.exec_())) self.task_dict[name].question_response.emit(bool(choice.exec_()))
Task_manager = TaskManager() TaskManager = _TaskManager()

View File

@@ -33,11 +33,11 @@ from datetime import datetime
import pyautogui import pyautogui
from .config import Config from .config import Config
from .task_manager import Task_manager from .task_manager import TaskManager
from app.services import System from app.services import System
class MainTimer(QWidget): class _MainTimer(QWidget):
def __init__( def __init__(
self, self,
@@ -81,7 +81,7 @@ class MainTimer(QWidget):
): ):
logger.info(f"定时任务:{name}") logger.info(f"定时任务:{name}")
Task_manager.add_task("自动代理_新调度台", name, info) TaskManager.add_task("自动代理_新调度台", name, info)
def set_silence(self): def set_silence(self):
"""设置静默模式""" """设置静默模式"""
@@ -125,4 +125,4 @@ class MainTimer(QWidget):
return queue_list return queue_list
Main_timer = MainTimer() MainTimer = _MainTimer()

View File

@@ -26,7 +26,7 @@ v4.2
""" """
from loguru import logger from loguru import logger
from PySide6.QtCore import QObject, Signal, QEventLoop from PySide6.QtCore import QObject, Signal, QEventLoop, QFileSystemWatcher, QTimer
import json import json
import sqlite3 import sqlite3
from datetime import datetime, timedelta from datetime import datetime, timedelta
@@ -50,6 +50,7 @@ class MaaManager(QObject):
create_user_list = Signal(list) create_user_list = Signal(list)
update_user_list = Signal(list) update_user_list = Signal(list)
update_log_text = Signal(str) update_log_text = Signal(str)
interrupt = Signal()
accomplish = Signal(dict) accomplish = Signal(dict)
isInterruptionRequested = False isInterruptionRequested = False
@@ -65,6 +66,12 @@ class MaaManager(QObject):
self.mode = mode self.mode = mode
self.config_path = config_path self.config_path = config_path
self.user_config_path = user_config_path self.user_config_path = user_config_path
self.log_monitor = QFileSystemWatcher()
self.log_monitor_timer = QTimer()
self.log_monitor_timer.timeout.connect(self.refresh_maa_log)
self.monitor_loop = QEventLoop()
self.interrupt.connect(self.quit_monitor)
with (self.config_path / "config.json").open("r", encoding="utf-8") as f: with (self.config_path / "config.json").open("r", encoding="utf-8") as f:
self.set = json.load(f) self.set = json.load(f)
@@ -139,7 +146,6 @@ class MaaManager(QObject):
# 开始代理 # 开始代理
for user in self.user_list: for user in self.user_list:
logger.info(f"{self.name} | 开始代理用户: {user[0]}")
if self.isInterruptionRequested: if self.isInterruptionRequested:
break break
@@ -155,6 +161,8 @@ class MaaManager(QObject):
self.update_user_list.emit(self.user_list) self.update_user_list.emit(self.user_list)
continue continue
logger.info(f"{self.name} | 开始代理用户: {user[0]}")
# 初始化代理情况记录和模式替换记录 # 初始化代理情况记录和模式替换记录
run_book = [False for _ in range(2)] run_book = [False for _ in range(2)]
mode_book = ["自动代理_剿灭", "自动代理_日常"] mode_book = ["自动代理_剿灭", "自动代理_日常"]
@@ -170,18 +178,16 @@ class MaaManager(QObject):
# 尝试次数循环 # 尝试次数循环
for i in range(self.set["RunSet"]["RunTimesLimit"]): for i in range(self.set["RunSet"]["RunTimesLimit"]):
logger.info(
f"{self.name} | 用户: {user[0]} - 尝试次数: {i + 1}/{self.set["RunSet"]["RunTimesLimit"]}"
)
if self.isInterruptionRequested: if self.isInterruptionRequested:
break break
logger.info(
f"{self.name} | 用户: {user[0]} - 尝试次数: {i + 1}/{self.set["RunSet"]["RunTimesLimit"]}"
)
# 剿灭-日常模式循环 # 剿灭-日常模式循环
for j in range(2): for j in range(2):
logger.info(
f"{self.name} | 用户: {user[0]} - 模式: {mode_book[j]}"
)
if self.isInterruptionRequested: if self.isInterruptionRequested:
break break
@@ -192,6 +198,10 @@ class MaaManager(QObject):
if run_book[j]: if run_book[j]:
continue continue
logger.info(
f"{self.name} | 用户: {user[0]} - 模式: {mode_book[j]}"
)
if self.data[user[2]][15] == "beta": if self.data[user[2]][15] == "beta":
self.if_open_emulator = True self.if_open_emulator = True
@@ -234,95 +244,45 @@ class MaaManager(QObject):
set["Configurations"]["Default"]["Start.EmulatorPath"] set["Configurations"]["Default"]["Start.EmulatorPath"]
) )
Config.silence_list.append(self.emulator_path) Config.silence_list.append(self.emulator_path)
# 记录是否超时的标记
self.if_time_out = False
# 监测MAA运行状态 # 监测MAA运行状态
while not self.isInterruptionRequested: self.start_monitor(start_time, mode_book[j])
# 获取MAA日志 if self.maa_result == "Success!":
logs = self.get_maa_log(start_time) logger.info(
f"{self.name} | 用户: {user[0]} - MAA进程完成代理任务"
# 判断是否超时 )
if len(logs) > 0: run_book[j] = True
latest_time = datetime.now() self.update_log_text.emit(
for _ in range(-1, 0 - len(logs) - 1, -1): "检测到MAA进程完成代理任务\n正在等待相关程序结束\n请等待10s"
try: )
latest_time = datetime.strptime( for _ in range(10):
logs[_][1:20], "%Y-%m-%d %H:%M:%S" if self.isInterruptionRequested:
) break
break time.sleep(1)
except ValueError: else:
pass logger.error(
now_time = datetime.now() f"{self.name} | 用户: {user[0]} - 代理任务异常: {self.maa_result}"
if ( )
j == 0 # 打印中止信息
and now_time - latest_time # 此时log变量内存储的就是出现异常的日志信息可以保存或发送用于问题排查
> timedelta( self.update_log_text.emit(
minutes=self.set["RunSet"][ f"{self.maa_result}\n正在中止相关程序\n请等待10s"
"AnnihilationTimeLimit" )
] # 无命令行中止MAA与其子程序
) System.kill_process(self.maa_exe_path)
) or ( self.if_open_emulator = True
j == 1 # 推送异常通知
and now_time - latest_time Notify.push_notification(
> timedelta( "用户自动代理出现异常!",
minutes=self.set["RunSet"]["RoutineTimeLimit"] f"用户 {user[0].replace("_", " 今天的")}{mode_book[j][5:7]}部分出现一次异常",
) f"{user[0].replace("_", " ")}{mode_book[j][5:7]}出现异常",
): 1,
self.if_time_out = True )
for _ in range(10):
# 合并日志 if self.isInterruptionRequested:
log = "".join(logs) break
# 更新MAA日志
if len(logs) > 100:
self.update_log_text.emit("".join(logs[-100:]))
else:
self.update_log_text.emit("".join(logs))
# 判断MAA程序运行状态
result = self.if_maa_success(log, mode_book[j])
if result == "Success!":
logger.info(
f"{self.name} | 用户: {user[0]} - MAA进程完成代理任务"
)
run_book[j] = True
self.update_log_text.emit(
"检测到MAA进程完成代理任务\n正在等待相关程序结束\n请等待10s"
)
for _ in range(10):
if self.isInterruptionRequested:
break
time.sleep(1)
break
elif result == "Wait":
# 检测时间间隔
time.sleep(1) time.sleep(1)
else:
logger.error(
f"{self.name} | 用户: {user[0]} - 代理任务异常: {result}"
)
# 打印中止信息
# 此时log变量内存储的就是出现异常的日志信息可以保存或发送用于问题排查
self.update_log_text.emit(
f"{result}\n正在中止相关程序\n请等待10s"
)
# 无命令行中止MAA与其子程序
System.kill_process(self.maa_exe_path)
self.if_open_emulator = True
# 推送异常通知
Notify.push_notification(
"用户自动代理出现异常!",
f"用户 {user[0].replace("_", " 今天的")}{mode_book[j][5:7]}部分出现一次异常",
f"{user[0].replace("_", " ")}{mode_book[j][5:7]}出现异常",
1,
)
for _ in range(10):
if self.isInterruptionRequested:
break
time.sleep(1)
break
# 移除静默进程标记 # 移除静默进程标记
Config.silence_list.remove(self.emulator_path) Config.silence_list.remove(self.emulator_path)
@@ -358,11 +318,12 @@ class MaaManager(QObject):
# 开始排查 # 开始排查
for user in self.user_list: for user in self.user_list:
logger.info(f"{self.name} | 开始排查用户: {user[0]}")
if self.isInterruptionRequested: if self.isInterruptionRequested:
break break
logger.info(f"{self.name} | 开始排查用户: {user[0]}")
user[1] = "运行" user[1] = "运行"
self.update_user_list.emit(self.user_list) self.update_user_list.emit(self.user_list)
@@ -387,46 +348,28 @@ class MaaManager(QObject):
) )
# 监测MAA运行状态 # 监测MAA运行状态
while not self.isInterruptionRequested: self.start_monitor(start_time, "人工排查")
# 获取MAA日志 if self.maa_result == "Success!":
logs = self.get_maa_log(start_time) logger.info(
# 合并日志 f"{self.name} | 用户: {user[0]} - MAA进程成功登录PRTS"
log = "".join(logs) )
run_book[0] = True
# 更新MAA日志 self.update_log_text.emit("检测到MAA进程成功登录PRTS")
if len(logs) > 100: else:
self.update_log_text.emit("".join(logs[-100:])) logger.error(
else: f"{self.name} | 用户: {user[0]} - MAA未能正确登录到PRTS: {self.maa_result}"
self.update_log_text.emit("".join(logs)) )
self.update_log_text.emit(
# 判断MAA程序运行状态 f"{self.maa_result}\n正在中止相关程序\n请等待10s"
result = self.if_maa_success(log, "人工排查") )
if result == "Success!": # 无命令行中止MAA与其子程序
logger.info( System.kill_process(self.maa_exe_path)
f"{self.name} | 用户: {user[0]} - MAA进程成功登录PRTS" self.if_open_emulator = True
) for _ in range(10):
run_book[0] = True if self.isInterruptionRequested:
self.update_log_text.emit("检测到MAA进程成功登录PRTS") break
break
elif result == "Wait":
# 检测时间间隔
time.sleep(1) time.sleep(1)
else:
logger.error(
f"{self.name} | 用户: {user[0]} - MAA未能正确登录到PRTS: {result}"
)
self.update_log_text.emit(
f"{result}\n正在中止相关程序\n请等待10s"
)
# 无命令行中止MAA与其子程序
System.kill_process(self.maa_exe_path)
self.if_open_emulator = True
for _ in range(10):
if self.isInterruptionRequested:
break
time.sleep(1)
break
# 登录成功,结束循环 # 登录成功,结束循环
if run_book[0]: if run_book[0]:
@@ -480,20 +423,7 @@ class MaaManager(QObject):
start_time = datetime.now() start_time = datetime.now()
# 监测MAA运行状态 # 监测MAA运行状态
while not self.isInterruptionRequested: self.start_monitor(start_time, "设置MAA")
# 获取MAA日志
logs = self.get_maa_log(start_time)
# 合并日志
log = "".join(logs)
# 判断MAA程序运行状态
result = self.if_maa_success(log, "设置MAA")
if result == "Success!":
break
elif result == "Wait":
# 检测时间间隔
time.sleep(1)
if "全局" in self.mode: if "全局" in self.mode:
(self.config_path / "Default").mkdir(parents=True, exist_ok=True) (self.config_path / "Default").mkdir(parents=True, exist_ok=True)
@@ -569,10 +499,17 @@ class MaaManager(QObject):
Notify.CompanyWebHookBotPush(title, f"{end_log}AUTO_MAA 敬上") Notify.CompanyWebHookBotPush(title, f"{end_log}AUTO_MAA 敬上")
self.agree_bilibili(False) self.agree_bilibili(False)
self.log_monitor.deleteLater()
self.log_monitor_timer.deleteLater()
self.accomplish.emit({"Time": begin_time, "History": end_log}) self.accomplish.emit({"Time": begin_time, "History": end_log})
def requestInterruption(self) -> None: def requestInterruption(self) -> None:
logger.info(f"{self.name} | 收到任务中止申请") logger.info(f"{self.name} | 收到任务中止申请")
if len(self.log_monitor.files()) != 0:
self.interrupt.emit()
self.maa_result = "您中止了本次任务"
self.isInterruptionRequested = True self.isInterruptionRequested = True
def push_question(self, title: str, message: str) -> bool: def push_question(self, title: str, message: str) -> bool:
@@ -587,9 +524,16 @@ class MaaManager(QObject):
def _capture_response(self, response: bool) -> None: def _capture_response(self, response: bool) -> None:
self.response = response self.response = response
def get_maa_log(self, start_time): def refresh_maa_log(self) -> None:
"""获取MAA日志""" """刷新MAA日志"""
with self.maa_log_path.open(mode="r", encoding="utf-8") as f:
pass
def check_maa_log(self, start_time: datetime, mode: str) -> None:
"""检查MAA日志以判断MAA程序运行状态"""
# 获取日志
logs = [] logs = []
if_log_start = False if_log_start = False
with self.maa_log_path.open(mode="r", encoding="utf-8") as f: with self.maa_log_path.open(mode="r", encoding="utf-8") as f:
@@ -604,50 +548,92 @@ class MaaManager(QObject):
pass pass
else: else:
logs.append(entry) logs.append(entry)
return logs log = "".join(logs)
def if_maa_success(self, log, mode) -> str: # 更新MAA日志
"""判断MAA程序运行状态""" if len(logs) > 100:
self.update_log_text.emit("".join(logs[-100:]))
else:
self.update_log_text.emit("".join(logs))
if "自动代理" in mode: if "自动代理" in mode:
# 获取最近一条日志的时间
latest_time = start_time
for _ in logs[::-1]:
try:
latest_time = datetime.strptime(_[1:20], "%Y-%m-%d %H:%M:%S")
break
except ValueError:
pass
time_book = {
"自动代理_剿灭": "AnnihilationTimeLimit",
"自动代理_日常": "RoutineTimeLimit",
}
if mode == "自动代理_日常" and "任务出错: Fight" in log: if mode == "自动代理_日常" and "任务出错: Fight" in log:
return "检测到MAA未能实际执行任务" self.maa_result = "检测到MAA未能实际执行任务"
if "任务出错: StartUp" in log: if "任务出错: StartUp" in log:
return "检测到MAA未能正确登录PRTS" self.maa_result = "检测到MAA未能正确登录PRTS"
elif "任务已全部完成!" in log: elif "任务已全部完成!" in log:
return "Success!" self.maa_result = "Success!"
elif ( elif (
("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log) ("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log)
or ("已停止" in log) or ("已停止" in log)
or ("MaaAssistantArknights GUI exited" in log) or ("MaaAssistantArknights GUI exited" in log)
): ):
return "检测到MAA进程异常" self.maa_result = "检测到MAA进程异常"
elif self.if_time_out: elif datetime.now() - latest_time > timedelta(
return "检测到MAA进程超时" minutes=self.set["RunSet"][time_book[mode]]
elif self.isInterruptionRequested: ):
return "您中止了本次任务" self.maa_result = "检测到MAA进程超时"
else: else:
return "Wait" self.maa_result = "Wait"
elif mode == "人工排查": elif mode == "人工排查":
if "完成任务: StartUp" in log: if "完成任务: StartUp" in log:
return "Success!" self.maa_result = "Success!"
elif ( elif (
("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log) ("请「检查连接设置」或「尝试重启模拟器与 ADB」或「重启电脑」" in log)
or ("已停止" in log) or ("已停止" in log)
or ("MaaAssistantArknights GUI exited" in log) or ("MaaAssistantArknights GUI exited" in log)
): ):
return "检测到MAA进程异常" self.maa_result = "检测到MAA进程异常"
elif self.isInterruptionRequested:
return "您中止了本次任务"
else: else:
return "Wait" self.maa_result = "Wait"
elif mode == "设置MAA": elif mode == "设置MAA":
if "MaaAssistantArknights GUI exited" in log: if "MaaAssistantArknights GUI exited" in log:
return "Success!" self.maa_result = "Success!"
else: else:
return "Wait" self.maa_result = "Wait"
if self.maa_result != "Wait":
self.quit_monitor()
def start_monitor(self, start_time: datetime, mode: str) -> None:
"""开始监视MAA日志"""
logger.info(f"{self.name} | 开始监视MAA日志")
self.log_monitor.addPath(str(self.maa_log_path))
self.log_monitor.fileChanged.connect(
lambda: self.check_maa_log(start_time, mode)
)
self.log_monitor_timer.start(1000)
self.monitor_loop.exec()
def quit_monitor(self) -> None:
"""退出MAA日志监视进程"""
if len(self.log_monitor.files()) != 0:
logger.info(f"{self.name} | 退出MAA日志监视")
self.log_monitor.removePath(str(self.maa_log_path))
self.log_monitor.fileChanged.disconnect()
self.log_monitor_timer.stop()
self.monitor_loop.quit()
def set_maa(self, mode, index): def set_maa(self, mode, index):
"""配置MAA运行参数""" """配置MAA运行参数"""

View File

@@ -52,7 +52,7 @@ from typing import List, Dict
import json import json
from app.core import Config, Task_manager, Task, MainInfoBar from app.core import Config, TaskManager, Task, MainInfoBar
class DispatchCenter(QWidget): class DispatchCenter(QWidget):
@@ -92,7 +92,7 @@ class DispatchCenter(QWidget):
dispatch_box = DispatchBox(task.name, self) dispatch_box = DispatchBox(task.name, self)
dispatch_box.top_bar.button.clicked.connect( dispatch_box.top_bar.button.clicked.connect(
lambda: Task_manager.stop_task(task.name) lambda: TaskManager.stop_task(task.name)
) )
task.create_task_list.connect(dispatch_box.info.task.create_task) task.create_task_list.connect(dispatch_box.info.task.create_task)
@@ -128,7 +128,7 @@ class DispatchCenter(QWidget):
self.script_list["主调度台"].top_bar.button.clicked.disconnect() self.script_list["主调度台"].top_bar.button.clicked.disconnect()
self.script_list["主调度台"].top_bar.button.setText("中止任务") self.script_list["主调度台"].top_bar.button.setText("中止任务")
self.script_list["主调度台"].top_bar.button.clicked.connect( self.script_list["主调度台"].top_bar.button.clicked.connect(
lambda: Task_manager.stop_task(task.name) lambda: TaskManager.stop_task(task.name)
) )
task.create_task_list.connect( task.create_task_list.connect(
self.script_list["主调度台"].info.task.create_task self.script_list["主调度台"].info.task.create_task
@@ -276,7 +276,7 @@ class DispatchBox(QWidget):
info = json.load(f) info = json.load(f)
logger.info(f"用户添加任务:{name}") logger.info(f"用户添加任务:{name}")
Task_manager.add_task(f"{self.mode.currentText()}_主调度台", name, info) TaskManager.add_task(f"{self.mode.currentText()}_主调度台", name, info)
elif self.object.currentText().split(" - ")[0] == "实例": elif self.object.currentText().split(" - ")[0] == "实例":
@@ -285,7 +285,7 @@ class DispatchBox(QWidget):
info = {"Queue": {"Member_1": name}} info = {"Queue": {"Member_1": name}}
logger.info(f"用户添加任务:{name}") logger.info(f"用户添加任务:{name}")
Task_manager.add_task( TaskManager.add_task(
f"{self.mode.currentText()}_主调度台", "自定义队列", info f"{self.mode.currentText()}_主调度台", "自定义队列", info
) )

View File

@@ -44,7 +44,7 @@ from qfluentwidgets import (
from PySide6.QtGui import QIcon, QCloseEvent from PySide6.QtGui import QIcon, QCloseEvent
from PySide6.QtCore import Qt from PySide6.QtCore import Qt
from app.core import Config, Task_manager, Main_timer, MainInfoBar from app.core import Config, TaskManager, MainTimer, MainInfoBar
from app.services import Notify, Crypto, System from app.services import Notify, Crypto, System
from .setting import Setting from .setting import Setting
from .member_manager import MemberManager from .member_manager import MemberManager
@@ -166,8 +166,8 @@ class AUTO_MAA(MSFluentWindow):
self.tray.setContextMenu(self.tray_menu) self.tray.setContextMenu(self.tray_menu)
self.tray.activated.connect(self.on_tray_activated) self.tray.activated.connect(self.on_tray_activated)
Task_manager.create_gui.connect(self.dispatch_center.add_board) TaskManager.create_gui.connect(self.dispatch_center.add_board)
Task_manager.connect_gui.connect(self.dispatch_center.connect_main_board) TaskManager.connect_gui.connect(self.dispatch_center.connect_main_board)
self.setting.ui.card_IfShowTray.checkedChanged.connect( self.setting.ui.card_IfShowTray.checkedChanged.connect(
lambda: self.show_ui("配置托盘") lambda: self.show_ui("配置托盘")
) )
@@ -327,9 +327,9 @@ class AUTO_MAA(MSFluentWindow):
self.show_ui("隐藏到托盘", if_quick=True) self.show_ui("隐藏到托盘", if_quick=True)
# 清理各功能线程 # 清理各功能线程
Main_timer.Timer.stop() MainTimer.Timer.stop()
Main_timer.Timer.deleteLater() MainTimer.Timer.deleteLater()
Task_manager.stop_task("ALL") TaskManager.stop_task("ALL")
# 关闭数据库连接 # 关闭数据库连接
Config.close_database() Config.close_database()

View File

@@ -57,7 +57,7 @@ from datetime import datetime, timedelta
import json import json
import shutil import shutil
from app.core import Config, MainInfoBar, Task_manager from app.core import Config, MainInfoBar, TaskManager
from app.services import Crypto from app.services import Crypto
from .Widget import ( from .Widget import (
LineEditMessageBox, LineEditMessageBox,
@@ -523,7 +523,7 @@ class MaaSettingBox(QWidget):
) )
) )
self.card_Set.clicked.connect( self.card_Set.clicked.connect(
lambda: Task_manager.add_task("设置MAA_全局", self.name, None) lambda: TaskManager.add_task("设置MAA_全局", self.name, None)
) )
Layout.addWidget(self.card_Name) Layout.addWidget(self.card_Name)
@@ -749,7 +749,7 @@ class MaaSettingBox(QWidget):
): ):
set_book = ["routine", "annihilation"] set_book = ["routine", "annihilation"]
Task_manager.add_task( TaskManager.add_task(
"设置MAA_用户", "设置MAA_用户",
self.name, self.name,
{ {

View File

@@ -1,7 +1,7 @@
{ {
"main_version": "4.2.3.1", "main_version": "4.2.3.1",
"updater_version": "1.1.1.3", "updater_version": "1.1.1.3",
"announcement": "\n## 新增功能\n- 添加`简洁用户列表下相邻两个任务间的切换方式`可选项\n## 修复BUG\n- 修复静默代理标记移除异常情况\n## 程序优化\n- 优化MAA关闭方法\n- 添加高级代理文件校验过程", "announcement": "\n## 新增功能\n- 添加`简洁用户列表下相邻两个任务间的切换方式`可选项\n## 修复BUG\n- 修复静默代理标记移除异常情况\n## 程序优化\n- 优化MAA关闭方法\n- 添加高级代理文件校验过程\n- 升级日志监看方法",
"proxy_list": [ "proxy_list": [
"", "",
"https://gitproxy.click/", "https://gitproxy.click/",