微信公众号定时推送早安消息完整实现指南(含天气、纪念日、生日提醒)
2025.09.29 14:52浏览量:184简介:本文详细讲解如何通过Python实现微信公众号定时推送早安消息功能,包含天气查询、纪念日提醒、生日祝福等模块的完整代码实现,并提供服务器部署与调试方案。
一、需求分析与技术选型
在数字化运营场景中,微信公众号的定时消息推送能显著提升用户粘性。根据企业用户调研,包含以下核心需求:
- 定时推送:精准控制发送时间(如每日7:00)
- 天气信息:基于用户地理位置实时获取
- 纪念日提醒:支持农历/公历日期计算
- 生日祝福:对接企业CRM系统数据
技术方案采用:
- 微信公众平台开发接口
- Python3.8+(requests/json/schedule库)
- 第三方API(和风天气/百度日历API)
- 云服务器定时任务(Linux crontab)
二、核心代码实现
1. 微信AccessToken获取
import requestsdef get_access_token(appid, appsecret):url = f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={appsecret}'return requests.get(url).json()['access_token']
2. 天气数据获取模块
def get_weather(city_code):params = {'location': city_code,'key': 'YOUR_WEATHER_API_KEY','lang': 'zh'}data = requests.get('https://devapi.qweather.com/v7/weather/now', params=params).json()return f"{data['now']['temp']}℃ {data['now']['text']}"
3. 纪念日计算引擎
from datetime import datetimedef get_anniversaries():events = {'春节': '2024-02-10','公司成立日': '2015-08-21'}today = datetime.now().strftime('%m-%d')return [k for k,v in events.items() if v[5:] == today]
4. 消息模板构建
def build_message():weather = get_weather('101020100') # 上海城市代码anniversaries = ','.join(get_anniversaries()) or '无特殊纪念日'return {"touser": "OPENID","template_id": "TEMPLATE_ID","data": {"weather": {"value": weather},"date": {"value": datetime.now().strftime('%Y年%m月%d日')},"anniversary": {"value": anniversaries}}}
三、定时任务部署方案
方案A:云服务器crontab
# 每天7点执行0 7 * * * /usr/bin/python3 /path/to/morning_push.py
方案B:Python schedule库
import scheduleimport timedef job():token = get_access_token(APPID, APPSECRET)message = build_message()requests.post(f'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={token}',json=message)schedule.every().day.at("07:00").do(job)while True:schedule.run_pending()time.sleep(60)
四、异常处理与监控
- Token过期机制:实现自动刷新(有效期7200秒)
- API调用限制:添加try-catch处理第三方服务异常
- 日志记录:使用logging模块记录执行状态
五、扩展功能建议
- 用户分组推送:根据地域/性别定制内容
- 生日数据库:对接MySQL定期查询
- 消息模板多样化:支持图文混排模板
完整代码仓库
访问GitHub获取完整项目(包含配置文件示例与单元测试):
https://github.com/example/wechat-morning-push
注意事项:

发表评论
登录后可评论,请前往 登录 或 注册