From d207c65df79a8b1fac06c0fd1c015d13b1173f9c Mon Sep 17 00:00:00 2001 From: DLmaster361 Date: Wed, 10 Sep 2025 20:33:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/setting.py | 17 ++++++++++++++- app/services/notification.py | 24 ++++++++++++---------- app/task/MAA.py | 40 ++++++++++++++++++------------------ app/task/general.py | 24 +++++++++++----------- 4 files changed, 61 insertions(+), 44 deletions(-) diff --git a/app/api/setting.py b/app/api/setting.py index f6f664b..647df00 100644 --- a/app/api/setting.py +++ b/app/api/setting.py @@ -26,7 +26,7 @@ import shutil from fastapi import APIRouter, Body from app.core import Config -from app.services import System +from app.services import System, Notify from app.models.schema import * router = APIRouter(prefix="/api/setting", tags=["全局设置"]) @@ -80,3 +80,18 @@ async def update_script(script: SettingUpdateIn = Body(...)) -> OutBase: code=500, status="error", message=f"{type(e).__name__}: {str(e)}" ) return OutBase() + + +@router.post( + "/test_notify", summary="测试通知", response_model=OutBase, status_code=200 +) +async def test_notify() -> OutBase: + """测试通知""" + + try: + await Notify.send_test_notification() + except Exception as e: + return OutBase( + code=500, status="error", message=f"{type(e).__name__}: {str(e)}" + ) + return OutBase() diff --git a/app/services/notification.py b/app/services/notification.py index 6b365da..eae77f3 100644 --- a/app/services/notification.py +++ b/app/services/notification.py @@ -41,7 +41,7 @@ class Notification: def __init__(self): super().__init__() - def push_plyer(self, title, message, ticker, t) -> bool: + async def push_plyer(self, title, message, ticker, t) -> bool: """ 推送系统通知 @@ -71,7 +71,7 @@ class Notification: return True - def send_mail(self, mode, title, content, to_address) -> None: + async def send_mail(self, mode, title, content, to_address) -> None: """ 推送邮件通知 @@ -134,7 +134,7 @@ class Notification: smtpObj.quit() logger.success(f"邮件发送成功: {title}") - def ServerChanPush(self, title, content, send_key) -> None: + async def ServerChanPush(self, title, content, send_key) -> None: """ 使用Server酱推送通知 @@ -170,7 +170,7 @@ class Notification: else: raise Exception(f"ServerChan 推送通知失败: {response.text}") - def WebHookPush(self, title, content, webhook_url) -> None: + async def WebHookPush(self, title, content, webhook_url) -> None: """ WebHook 推送通知 @@ -195,7 +195,9 @@ class Notification: else: raise Exception(f"WebHook 推送通知失败: {response.text}") - def CompanyWebHookBotPushImage(self, image_path: Path, webhook_url: str) -> None: + async def CompanyWebHookBotPushImage( + self, image_path: Path, webhook_url: str + ) -> None: """ 使用企业微信群机器人推送图片通知 @@ -232,13 +234,13 @@ class Notification: else: raise Exception(f"企业微信群机器人推送图片失败: {response.text}") - def send_test_notification(self) -> None: + async def send_test_notification(self) -> None: """发送测试通知到所有已启用的通知渠道""" logger.info("发送测试通知到所有已启用的通知渠道") # 发送系统通知 - self.push_plyer( + await self.push_plyer( "测试通知", "这是 AUTO_MAA 外部通知测试信息。如果你看到了这段内容, 说明 AUTO_MAA 的通知功能已经正确配置且可以正常工作!", "测试通知", @@ -247,7 +249,7 @@ class Notification: # 发送邮件通知 if Config.get("Notify", "IfSendMail"): - self.send_mail( + await self.send_mail( "文本", "AUTO_MAA测试通知", "这是 AUTO_MAA 外部通知测试信息。如果你看到了这段内容, 说明 AUTO_MAA 的通知功能已经正确配置且可以正常工作!", @@ -256,7 +258,7 @@ class Notification: # 发送Server酱通知 if Config.get("Notify", "IfServerChan"): - self.ServerChanPush( + await self.ServerChanPush( "AUTO_MAA测试通知", "这是 AUTO_MAA 外部通知测试信息。如果你看到了这段内容, 说明 AUTO_MAA 的通知功能已经正确配置且可以正常工作!", Config.get("Notify", "ServerChanKey"), @@ -264,12 +266,12 @@ class Notification: # 发送WebHook通知 if Config.get("Notify", "IfCompanyWebHookBot"): - self.WebHookPush( + await self.WebHookPush( "AUTO_MAA测试通知", "这是 AUTO_MAA 外部通知测试信息。如果你看到了这段内容, 说明 AUTO_MAA 的通知功能已经正确配置且可以正常工作!", Config.get("Notify", "CompanyWebHookBotUrl"), ) - Notify.CompanyWebHookBotPushImage( + await self.CompanyWebHookBotPushImage( Path.cwd() / "res/images/notification/test_notify.png", Config.get("Notify", "CompanyWebHookBotUrl"), ) diff --git a/app/task/MAA.py b/app/task/MAA.py index c339246..8f63cfe 100644 --- a/app/task/MAA.py +++ b/app/task/MAA.py @@ -594,7 +594,7 @@ class MaaManager: self.if_open_emulator = True # 推送异常通知 - Notify.push_plyer( + await Notify.push_plyer( "用户自动代理出现异常!", f"用户 {user['name']} 的{MOOD_BOOK[mode]}部分出现一次异常", f"{user['name']}的{MOOD_BOOK[mode]}出现异常", @@ -914,7 +914,7 @@ class MaaManager: logger.success( f"用户 {self.user_list[self.index]['user_id']} 的自动代理任务已完成" ) - Notify.push_plyer( + await Notify.push_plyer( "成功完成一个自动代理任务!", f"已完成用户 {self.user_list[self.index]['name']} 的自动代理任务", f"已完成 {self.user_list[self.index]['name']} 的自动代理任务", @@ -1055,7 +1055,7 @@ class MaaManager: result_text += f"\n未开始{self.mode}的用户: \n{"\n".join(result["waiting_user"])}\n" # 推送代理结果通知 - Notify.push_plyer( + await Notify.push_plyer( title.replace("报告", "已完成!"), f"已完成用户数: {len(over_user)}, 未完成用户数: {len(error_user) + len(wait_user)}", f"已完成用户数: {len(over_user)}, 未完成用户数: {len(error_user) + len(wait_user)}", @@ -1901,19 +1901,19 @@ class MaaManager: # 发送全局通知 if Config.get("Notify", "IfSendMail"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, Config.get("Notify", "ToAddress") ) if Config.get("Notify", "IfServerChan"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", Config.get("Notify", "ServerChanKey"), ) if Config.get("Notify", "IfCompanyWebHookBot"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", Config.get("Notify", "CompanyWebHookBotUrl"), @@ -1955,19 +1955,19 @@ class MaaManager: if Config.get("Notify", "IfSendStatistic"): if Config.get("Notify", "IfSendMail"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, Config.get("Notify", "ToAddress") ) if Config.get("Notify", "IfServerChan"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", Config.get("Notify", "ServerChanKey"), ) if Config.get("Notify", "IfCompanyWebHookBot"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", Config.get("Notify", "CompanyWebHookBotUrl"), @@ -1981,7 +1981,7 @@ class MaaManager: # 发送邮件通知 if self.cur_user_data.get("Notify", "IfSendMail"): if self.cur_user_data.get("Notify", "ToAddress"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, @@ -1993,7 +1993,7 @@ class MaaManager: # 发送ServerChan通知 if self.cur_user_data.get("Notify", "IfServerChan"): if self.cur_user_data.get("Notify", "ServerChanKey"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "ServerChanKey"), @@ -2006,7 +2006,7 @@ class MaaManager: # 推送CompanyWebHookBot通知 if self.cur_user_data.get("Notify", "IfCompanyWebHookBot"): if self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"), @@ -2027,24 +2027,24 @@ class MaaManager: if Config.get("Notify", "IfSendSixStar"): if Config.get("Notify", "IfSendMail"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, Config.get("Notify", "ToAddress") ) if Config.get("Notify", "IfServerChan"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, "好羡慕~\n\nAUTO_MAA 敬上", Config.get("Notify", "ServerChanKey"), ) if Config.get("Notify", "IfCompanyWebHookBot"): - Notify.WebHookPush( + await Notify.WebHookPush( title, "好羡慕~\n\nAUTO_MAA 敬上", Config.get("Notify", "CompanyWebHookBotUrl"), ) - Notify.CompanyWebHookBotPushImage( + await Notify.CompanyWebHookBotPushImage( Path.cwd() / "res/images/notification/six_star.png", Config.get("Notify", "CompanyWebHookBotUrl"), ) @@ -2057,7 +2057,7 @@ class MaaManager: # 发送邮件通知 if self.cur_user_data.get("Notify", "IfSendMail"): if self.cur_user_data.get("Notify", "ToAddress"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, @@ -2070,7 +2070,7 @@ class MaaManager: if self.cur_user_data.get("Notify", "IfServerChan"): if self.cur_user_data.get("Notify", "ServerChanKey"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, "好羡慕~\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "ServerChanKey"), @@ -2083,12 +2083,12 @@ class MaaManager: # 推送CompanyWebHookBot通知 if self.cur_user_data.get("Notify", "IfCompanyWebHookBot"): if self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"): - Notify.WebHookPush( + await Notify.WebHookPush( title, "好羡慕~\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"), ) - Notify.CompanyWebHookBotPushImage( + await Notify.CompanyWebHookBotPushImage( Path.cwd() / "res/images/notification/six_star.png", self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"), ) diff --git a/app/task/general.py b/app/task/general.py index aa99917..9010b93 100644 --- a/app/task/general.py +++ b/app/task/general.py @@ -454,7 +454,7 @@ class GeneralManager: await System.kill_process(self.game_path) # 推送异常通知 - Notify.push_plyer( + await Notify.push_plyer( "用户自动代理出现异常!", f"用户 {user['name']} 的自动代理出现一次异常", f"{user['name']} 的自动代理出现异常", @@ -576,7 +576,7 @@ class GeneralManager: logger.success( f"用户 {self.user_list[self.index]['user_id']} 的自动代理任务已完成" ) - Notify.push_plyer( + await Notify.push_plyer( "成功完成一个自动代理任务!", f"已完成用户 {self.user_list[self.index]['name']} 的自动代理任务", f"已完成 {self.user_list[self.index]['name']} 的自动代理任务", @@ -703,7 +703,7 @@ class GeneralManager: result_text += f"\n未开始{self.mode}的用户: \n{"\n".join(result['waiting_user'])}\n" # 推送代理结果通知 - Notify.push_plyer( + await Notify.push_plyer( title.replace("报告", "已完成!"), f"已完成配置数: {len(over_user)}, 未完成配置数: {len(error_user) + len(wait_user)}", f"已完成配置数: {len(over_user)}, 未完成配置数: {len(error_user) + len(wait_user)}", @@ -979,19 +979,19 @@ class GeneralManager: # 发送全局通知 if Config.get("Notify", "IfSendMail"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, Config.get("Notify", "ToAddress") ) if Config.get("Notify", "IfServerChan"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", Config.get("Notify", "ServerChanKey"), ) if Config.get("Notify", "IfCompanyWebHookBot"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", Config.get("Notify", "CompanyWebHookBotUrl"), @@ -1016,19 +1016,19 @@ class GeneralManager: if Config.get("Notify", "IfSendStatistic"): if Config.get("Notify", "IfSendMail"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, Config.get("Notify", "ToAddress") ) if Config.get("Notify", "IfServerChan"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", Config.get("Notify", "ServerChanKey"), ) if Config.get("Notify", "IfCompanyWebHookBot"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", Config.get("Notify", "CompanyWebHookBotUrl"), @@ -1042,7 +1042,7 @@ class GeneralManager: # 发送邮件通知 if self.cur_user_data.get("Notify", "IfSendMail"): if self.cur_user_data.get("Notify", "ToAddress"): - Notify.send_mail( + await Notify.send_mail( "网页", title, message_html, @@ -1054,7 +1054,7 @@ class GeneralManager: # 发送ServerChan通知 if self.cur_user_data.get("Notify", "IfServerChan"): if self.cur_user_data.get("Notify", "ServerChanKey"): - Notify.ServerChanPush( + await Notify.ServerChanPush( title, f"{serverchan_message}\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "ServerChanKey"), @@ -1067,7 +1067,7 @@ class GeneralManager: # 推送CompanyWebHookBot通知 if self.cur_user_data.get("Notify", "IfCompanyWebHookBot"): if self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"): - Notify.WebHookPush( + await Notify.WebHookPush( title, f"{message_text}\n\nAUTO_MAA 敬上", self.cur_user_data.get("Notify", "CompanyWebHookBotUrl"),