重构项目结构,优化模块划分,修复数据结构和登录验证问题
This commit is contained in:
+101
@@ -0,0 +1,101 @@
|
||||
"""信息发送管理模块"""
|
||||
import requests
|
||||
from logger import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
class NotificationManager:
|
||||
"""通知管理器"""
|
||||
|
||||
def __init__(self, token: str = "", provider: str = "iyuu"):
|
||||
"""
|
||||
初始化通知管理器
|
||||
|
||||
Args:
|
||||
token: 通知token
|
||||
provider: 通知服务提供商 (iyuu, wechat, dingtalk等)
|
||||
"""
|
||||
self.token = token
|
||||
self.provider = provider
|
||||
self.api_url = f"https://iyuu.cn/{token}.send" if provider == "iyuu" else ""
|
||||
|
||||
def send(self, title: str, content: str) -> bool:
|
||||
"""
|
||||
发送通知
|
||||
|
||||
Args:
|
||||
title: 通知标题
|
||||
content: 通知内容
|
||||
|
||||
Returns:
|
||||
是否发送成功
|
||||
"""
|
||||
if not self.token:
|
||||
logger.warning("未配置通知token,跳过发送")
|
||||
return False
|
||||
|
||||
if self.provider == "iyuu":
|
||||
return self._send_iyuu(title, content)
|
||||
else:
|
||||
logger.warning(f"不支持的通知提供商: {self.provider}")
|
||||
return False
|
||||
|
||||
def _send_iyuu(self, title: str, content: str) -> bool:
|
||||
"""
|
||||
通过爱语飞飞发送通知
|
||||
|
||||
Args:
|
||||
title: 通知标题
|
||||
content: 通知内容
|
||||
|
||||
Returns:
|
||||
是否发送成功
|
||||
"""
|
||||
try:
|
||||
logger.info(f"发送通知: {title}")
|
||||
|
||||
response = requests.post(
|
||||
self.api_url,
|
||||
json={
|
||||
'text': title,
|
||||
'desp': content
|
||||
},
|
||||
timeout=10
|
||||
)
|
||||
|
||||
response.raise_for_status()
|
||||
result = response.json()
|
||||
|
||||
if result.get('errcode') == 0:
|
||||
logger.info("通知发送成功")
|
||||
return True
|
||||
else:
|
||||
logger.error(f"通知发送失败: {result.get('errmsg')}")
|
||||
return False
|
||||
|
||||
except requests.RequestException as e:
|
||||
logger.error(f"通知请求失败: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.error(f"通知发送异常: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def create_notification_manager(config: dict) -> NotificationManager:
|
||||
"""
|
||||
根据配置创建通知管理器
|
||||
|
||||
Args:
|
||||
config: 通知配置字典
|
||||
|
||||
Returns:
|
||||
通知管理器实例
|
||||
"""
|
||||
token = config.get('iyuu_token', '')
|
||||
provider = config.get('provider', 'iyuu')
|
||||
|
||||
if token:
|
||||
return NotificationManager(token=token, provider=provider)
|
||||
|
||||
return None
|
||||
Reference in New Issue
Block a user