微信公众号定时推送早安消息完整实现指南(含天气、纪念日、生日提醒)
2025.09.29 14:52浏览量:20简介:本文详细讲解如何通过Python实现微信公众号定时推送早安消息功能,包含天气查询、纪念日提醒、生日祝福等模块的完整代码实现,并提供服务器部署与调试方案。
一、需求分析与技术选型
在数字化运营场景中,微信公众号的定时消息推送能显著提升用户粘性。根据企业用户调研,包含以下核心需求:
- 定时推送:精准控制发送时间(如每日7:00)
- 天气信息:基于用户地理位置实时获取
- 纪念日提醒:支持农历/公历日期计算
- 生日祝福:对接企业CRM系统数据
技术方案采用:
- 微信公众平台开发接口
- Python3.8+(requests/json/schedule库)
- 第三方API(和风天气/百度日历API)
- 云服务器定时任务(Linux crontab)
二、核心代码实现
1. 微信AccessToken获取
import requests
def 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 datetime
def 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 schedule
import time
def 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
注意事项:
发表评论
登录后可评论,请前往 登录 或 注册