用Python定时发送微信消息:完整方案与实战避坑指南
每天早上9点给客户群发一条提醒?每周五下午5点自动催同事交周报?生日当天给好友送上祝福?这些看起来"自动化"很高大上的事情,用Python其实10行代码就能搞定。
今天这篇文章,从方案选型 → 代码实现 → Windows后台部署 → 常见坑,一次给你讲透。
一、三种主流方案对比
Python发微信消息,主要有三种思路,适用场景完全不同:
| 方案 |
原理 |
适用场景 |
| 企业微信API |
调用官方接口,合法稳定 |
企业内部通知、客户群发 |
| 公众号模板消息 |
用户关注后主动推送 |
服务通知、订单提醒 |
| PC微信UI自动化 |
pywinauto控制桌面微信 |
个人号、群机器人(注意合规) |
重点提醒:腾讯对个人号自动化管控严格,频繁操作会导致封号。商业用途首选企业微信API,个人使用也要控制频率。
二、方案一:企业微信API(推荐)
企业微信对自建应用开放了"发消息"接口,可以给企业内部成员、或者外部客户发送文本/图片/卡片消息。这是合规、稳定、永久免费的方案。
Step 1:创建自建应用
登录企业微信管理后台 → 应用管理 → 创建应用 → 拿到 AgentId 和 Secret。
Step 2:获取access_token
GET https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
Step 3:发送消息
10行核心代码,发送文本消息给指定用户:
import requests
token = "你的access_token"
url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}"
data = {
"touser": "UserID",
"msgtype": "text",
"agentid": 1000002,
"text": {"content": "您好,这是定时消息!"}
}
requests.post(url, json=data)
调用成功,对方就会在企业微信里收到一条消息提醒,完全合规,永不封号。
三、方案二:PC微信+pywinauto(个人号)
如果你非要给个人微信好友/群发消息,就得用UI自动化。核心库是 pywinauto,模拟人操作微信客户端。
from pywinauto import Application
import pyperclip, time
# 连接微信窗口
app = Application(backend="uia").connect(title_re="微信")
# 定位到搜索框、输入好友名、发送消息...
# 把消息内容写入剪贴板
pyperclip.copy("早上好!今天也要加油鸭~")
# 模拟Ctrl+V粘贴 + 回车发送
核心思路是:找窗口 → 找控件 → 模拟键盘鼠标 → 剪贴板传内容。听起来简单,实际坑非常多。
常见坑点
| 坑 |
原因 |
解决 |
| 窗口找不到 |
微信有多个进程 |
用 process 限定主进程 |
| 中文乱码 |
剪贴板编码问题 |
统一用 UTF-8 写入 |
| 消息发不出去 |
焦点不在输入框 |
先 click 输入框再粘贴 |
| 微信被封 |
操作太频繁 |
加随机间隔,模拟人工 |
四、让脚本定时跑起来
消息逻辑写好了,怎么让它每天早上9点准时执行?三种方式:
方式1:Windows任务计划程序(最稳)
Win+R 输入 taskschd.msc → 创建基本任务 → 触发器选"每天9:00" → 操作选"启动程序"指向你的 .py 文件。系统级的,不掉电不漏跑。
方式2:APScheduler库(写在代码里)
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('cron', hour=9, minute=0)
def job():
send_message("早上好!")
sched.start()
方式3:服务器Cron(Linux)
有云服务器的话,crontab -e 加一行 0 9 * * * python /home/script/send.py 就行。7×24小时不间断。
五、真实案例:充电宝业务提醒
我自己的项目里,AI智能体每天早上9:20会自动检查数据,发现昨日新增分成超过100元的代理,就自动调用企业微信API给他发一条恭喜+对账明细。效果:
-
- 原来靠运营手动发,每天半小时
-
- 现在全自动,0人工
-
- 代理满意度↑,运营时间↓
-
这个流程就是 "定时任务 + API调用 + 模板化文案" 的典型应用。看似简单,背后是稳定的任务调度+异常重试+日志记录。
六、合规与避坑建议
1. 优先用企业微信API。个人号方案只适合自己用,不要碰群控、外挂、批量加好友这些灰色操作。
2. 消息频率加随机化。固定9:00:00发,腾讯一秒就能识别。改成 9:00 到 9:05 之间随机发送,更像真人。
3. 必须加异常处理。网络抖动、微信未登录、token过期都是常态。try/except + 日志记录 + 失败重试3次,是基本功。
4. 别在脚本里硬编码敏感信息。AppID、Token放环境变量或配置文件,.gitignore 里加上。
写在最后
Python定时发消息这件事,技术难度不大,难的是工程化思维——怎么调度、怎么容错、怎么合规、怎么不被打扰。把这套思路掌握,你就能把任何重复劳动都自动化掉。
下一期我会写"如何让定时任务更智能——失败重试+多通道通知",欢迎持续关注。
—— END ——
扫码添加秦杰,探讨AI智能体落地应用

AI智能体 | 自动化办公 | 微信机器人开发