teddy 7233700539 feat: 重构定时任务系统并增强配置管理
- 将硬编码的时间配置改为从CONFIG读取
- 支持多接收人配置,修改open_id为数组类型
- 增加发送时间等待功能,确保消息在指定时间发送
- 改进停止定时任务的进程查找逻辑
- 更新配置项,增加checking_time、sending_time和message字段
2025-06-26 17:24:50 +08:00

66 lines
2.0 KiB
Python

from wxauto import WeChat
from datetime import date, datetime, time as dt_time
import sys
import os
import subprocess
import json
from config import CONFIG
import time
def wait_until_time():
"""等待到配置的发送时间"""
now = datetime.now()
# 从配置文件中读取发送时间
send_time_str = CONFIG['sending_time'] # "17:10"
hour, minute = map(int, send_time_str.split(':'))
target_time = now.replace(hour=hour, minute=minute, second=0, microsecond=0)
# 如果当前时间已经过了今天的发送时间,则设置为明天的发送时间
if now >= target_time:
target_time = target_time.replace(day=target_time.day + 1)
wait_seconds = (target_time - now).total_seconds()
print(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}")
print(f"将在 {target_time.strftime('%Y-%m-%d %H:%M:%S')} 执行发送操作")
print(f"等待时间: {wait_seconds/3600:.2f} 小时")
time.sleep(wait_seconds)
def send_daily_message():
"""发送每日消息的主函数"""
today = date.today()
formatted_date = today.strftime('%Y-%m-%d')
file_name = formatted_date + ".png"
file_path = CONFIG['file_path'] + file_name
try:
wx = WeChat()
except:
subprocess.run([sys.executable, 'send_openmsg.py'])
return False
msg = CONFIG['message']
who = CONFIG['messages_reciever']
if os.path.isfile(file_path):
print("找到了指定文件!")
# 等待到配置的时间再执行发送操作
wait_until_time()
print("开始发送文件和消息...")
wx.SendFiles(filepath=file_path, who=who)
wx.SendMsg(msg=msg, who=who)
print("发送完成!")
return True
else:
print("没找到指定文件")
subprocess.run([sys.executable, 'send_filemsg.py'])
return False
# 如果直接运行此脚本,执行发送消息功能
if __name__ == "__main__":
send_daily_message()