一、需求说明

本指南适用于需要在固定时间自动向企业微信群发送提醒消息的场景,例如每日工作提醒、数据播报、状态通知等。本教程以“每个工作日18:15自动发送新人磨合记录填写提醒”为例,完整讲解从脚本编写到定时任务配置的全流程,支持Windows 10/11系统,无需服务器即可实现。

二、整体方案介绍

本方案采用“Python脚本+Windows任务计划程序”的组合实现,无需额外付费服务,稳定性高,配置简单:

  • Python脚本:负责调用企业微信自定义机器人的Webhook接口,完成消息发送逻辑;
  • Windows任务计划程序:系统自带的定时任务工具,负责在指定时间自动触发Python脚本执行,支持工作日定时、失败重试、错过补发等功能。

三、环境准备

在开始配置前,需要确认以下基础环境已就绪:

  1. Windows电脑:需要在工作日保持开机状态(可锁屏,无需保持屏幕常亮,但不能关机或进入睡眠模式);
  2. Python环境:建议安装Python 3.8及以上版本,安装时勾选“Add Python to PATH”选项;
  3. 依赖库:需要安装requests库,在命令行执行pip install requests即可安装;
  4. 企业微信群自定义机器人Webhook地址
  • 打开需要接收消息的飞书群,点击右上角群设置图标;
  • 选择「...」→「消息推送」→「添加机器人」;
  • 设置机器人名称和描述后,系统会生成一串Webhook链接,复制保存备用;
  • 新手建议先不开启签名校验、IP白名单等安全设置,跑通流程后再加固。

四、编写Python发送脚本

在你的脚本存放目录下新建一个.py文件(例如本例中的每日提醒机器人.py),将以下代码粘贴进去,将WEBHOOK_URL替换为你刚才复制的企业微信Webhook地址即可:

import requests
import json
import os
from datetime import datetime, timedelta

# 🔽 替换为你的机器人 Webhook 地址
WEBHOOK_URL = ""

MESSAGE_CONTENT = "请各位填写今日的新人磨合记录"

LOG_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "log.txt")

LOG_RETENTION_DAYS = 30  # 日志保留天数


def clean_old_logs():
    """清理超过保留天数的旧日志"""
    if not os.path.exists(LOG_FILE):
        return

    cutoff_date = datetime.now() - timedelta(days=LOG_RETENTION_DAYS)
    kept_lines = []
    removed_count = 0

    with open(LOG_FILE, "r", encoding="utf-8") as f:
        for line in f:
            # 日志格式: [2026-09-04 18:25:00] 消息内容
            # 提取行首的日期部分进行判断
            if line.startswith("[") and len(line) >= 20:
                try:
                    log_date_str = line[1:11]  # 取出 "2026-09-04"
                    log_date = datetime.strptime(log_date_str, "%Y-%m-%d")
                    if log_date >= cutoff_date:
                        kept_lines.append(line)  # 保留
                    else:
                        removed_count += 1  # 过期,丢弃
                except ValueError:
                    kept_lines.append(line)  # 日期解析失败,保守保留
            else:
                kept_lines.append(line)  # 分割线等非标准行,保留

    # 如果有过期日志被清理,则重写文件
    if removed_count > 0:
        with open(LOG_FILE, "w", encoding="utf-8") as f:
            f.writelines(kept_lines)
        print(f"🧹 已清理 {removed_count} 条过期日志")


def log(message):
    """将信息同时输出到控制台和日志文件"""
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    line = f"[{timestamp}] {message}"
    print(line)
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(line + "\n")


def send_message():
    data = {
        "msgtype": "text",
        "text": {
            "content": MESSAGE_CONTENT,
            "mentioned_list": ["@all"]
        }
    }
    headers = {"Content-Type": "application/json"}

    try:
        response = requests.post(WEBHOOK_URL, data=json.dumps(data), headers=headers)
        result = response.json()
        if result.get("errcode") == 0:
            log("✅ 发送成功!")
        else:
            log(f"❌ 发送失败 - 错误码: {result.get('errcode')}, 原因: {result.get('errmsg')}")
    except Exception as e:
        log(f"❌ 异常: {e}")


if __name__ == "__main__":
    # 每次运行前先清理旧日志
    clean_old_logs()

    log("程序被触发,开始发送...")
    send_message()
    log("--- 本次执行结束 ---\n")

脚本测试

保存文件后,直接在命令行运行python 每日提醒机器人.py,如果企业微信群收到消息,说明脚本运行正常,可以进入下一步配置定时任务。

五、配置Windows定时任务

最推荐的配置方法:

这边建议直接拿着你的脚本喂给任意ai agent,让它帮你针对于你的系统进行定时任务设置,提示词如下:

请根据我的脚本文件,帮我设定每周的周一到周五下午18:15分执行这个脚本文件,且无论我的电脑开机或者不开机都要执行。

如果你要手动操作,下面分享一个对于windows系统的自动任务计划程序设定

1. 打开任务计划程序

Win+R打开运行窗口,输入taskschd.msc回车,即可打开任务计划程序。

2. 创建新任务

点击右侧操作栏的「创建任务」(不要选“创建基本任务”,高级选项更完整)。

常规选项卡配置
  • 名称:填写任务名称,例如“每日新人磨合记录填写提醒”;
  • 安全选项
  • 勾选「不管用户是否登录都要运行」:这样电脑锁屏状态下也能正常触发任务;
  • 勾选「使用最高权限运行」:避免部分场景下权限不足导致执行失败。

触发器选项卡配置

点击「新建」,按以下参数设置:

  • 开始任务:选择「按计划」;
  • 设置:选择「每周」,勾选周一到周五(根据你的需求调整工作日);
  • 时间:设置为你需要的触发时间,本例为18:15:00;
  • 点击「确定」保存触发器。

操作选项卡配置

点击「新建」,按以下参数填写:

  • 操作:选择「启动程序」;
  • 程序或脚本:填写你的Python解释器的绝对路径,例如本例中的C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe(可以在命令行输入where python查看你的Python路径);
  • 添加参数(可选):填写你的脚本完整文件名,例如每日提醒机器人.py
  • 起始于(可选):填写你的脚本存放目录的绝对路径,例如D:\我的项目\自动化脚本(注意结尾不要加反斜杠\)。

条件选项卡配置
  • 取消勾选「如果计算机改用电池电源,则停止」:避免电源切换导致任务中断;
  • 其他选项保持默认即可。

设置选项卡配置
  • 勾选「如果过了计划开始时间,立即启动任务」:如果到了触发时间电脑处于关机/重启状态,开机后会自动补发,避免漏发;
  • 勾选「如果任务失败,按以下频率重新启动」,间隔设置为1分钟,最多尝试3次:避免网络抖动导致发送失败;
  • 其他选项保持默认即可。

所有选项配置完成后,点击「确定」保存任务,如果弹出提示要求输入当前Windows账户的密码,输入你的开机密码即可。

六、测试验证

任务创建完成后,在任务计划程序库中找到你刚创建的任务,确认以下信息:

  • 状态显示为「准备就绪」;
  • 触发器显示为你的设置的工作日和时间;
  • 下次运行时间显示为下一个工作日的触发时间。

右键点击任务,选择「运行」手动测试一次,确认企业微信群收到消息后,说明整个流程配置完成,后续会按设定时间自动执行。

七、常见问题排查

问题1:任务显示运行成功,但飞书没有收到消息

  • 检查操作选项卡中的「起始于」是否填写了脚本所在目录,任务计划程序默认工作目录是C:\Windows\System32,不填写会导致脚本中的相对路径失效;
  • 检查Python解释器路径是否正确,建议使用绝对路径,不要直接填python
  • 检查脚本中是否有相对路径引用,建议全部改为绝对路径。

问题2:任务没有在设定时间触发

  • 打开服务管理器(services.msc),找到「Task Scheduler」服务,确认启动类型为「自动」且服务正在运行;
  • 检查电脑是否处于睡眠/关机状态,睡眠状态下默认不会触发任务(可在条件选项卡勾选「唤醒计算机运行此任务」解决);
  • 检查触发器配置是否正确,确认工作日和时间设置无误。

问题3:任务运行报错0x1

  • 确认「不管用户是否登录都要运行」和「使用最高权限运行」两个选项都已勾选;
  • 确认脚本文件路径、Python解释器路径都没有拼写错误,路径中如果包含空格,需要用英文引号包裹。

问题4:发送消息报错超时

  • 检查电脑网络连接是否正常;
  • 确认企业微信Webhook地址是否正确,机器人是否被删除;
  • 可以在脚本中增加重试逻辑,或者在任务计划程序的设置选项卡中开启失败重试。

八、日常维护注意事项

  1. 电脑状态:执行任务的电脑需要在工作日触发时间保持开机状态,可以锁屏,但不能关机或进入睡眠模式;
  2. 脚本修改:如果需要修改提醒内容,直接修改.py文件即可,不需要重新配置任务计划程序,任务会自动执行最新版本的脚本;
  3. 任务管理
  • 临时停止一次:右键任务→「结束」,下次到时间仍会正常触发;
  • 彻底关闭任务:右键任务→「禁用」,后续需要时右键「启用」即可恢复;
  • 删除任务:右键任务→「删除」,任务会被彻底移除。

执行记录:在任务计划程序右侧点击「历史记录」选项卡,可以查看每次任务的触发时间、运行结果,方便排查问题。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐