微信公众号实现定时提醒功能

微信公众号实现定时提醒功能

源码地址:https://github.com/selierlin/help_girlfriends

help_girlfriends 是一款基于微信公众号和推送通知的应用,旨在帮助女朋友解决丢三落四的问题。通过定时提醒女朋友,帮助她养成良好的生活习惯。

下面是该项目的流程图:

在这里插入图片描述

具体说明如下:

  1. 用户在微信公众号中发送提醒指令。

  2. 微信公众号通过 Werobot 框架接收到用户发送的提醒指令。

  3. Werobot 解析指令,并将其转换为 Apscheduler 定时任务。

  4. Apscheduler 将定时任务保存到 SQLite 数据库中。

  5. Apscheduler 返回添加任务成功提示。

  6. Werobot 将添加任务成功提示返回给微信公众号。

  7. 微信公众号将添加任务成功提示返回给用户。

定时任务流程图:

在这里插入图片描述

快速开始

下面提供两种方案,一种是直接我用搭建好的,无需任何条件就可以完成;另外一个需要自备公众号、服务器

1. 直接使用

  1. 在微信中搜索并关注 葫芦同学 公众号。
  2. 将女朋友的push deer添加到已注册的用户列表中。
  3. 在设置页面中,选择提醒时间和频率。
  4. 等待每天的定时提醒,帮助女朋友养成好习惯。

配置推送通知

目前支持推送渠道为 PushDeer,下载PushDeer后,创建设备、创建Key,复制Key到公众号中绑定使用,用于通知消息。

2. 自行搭建

准备条件

  1. 个人公众号,申请地址 ,创建一个订阅号即可。
  2. Linux服务器

部署

如果您想自行搭建该应用,请按照以下步骤操作:

  1. 克隆项目代码:
git clone https://github.com/selierlin/help_girlfriends
  1. 复制项目中的模板文件,生成最终的配置文件:
cp config-template.json config.json

config.json 文件中,您需要配置微信公众号的 TOKENAPP_IDAPP_SECRET,以及应用的 portdebug 模式。参考以下说明:

{
  "db_path": "./jobs.db", # 数据库文件位置,启动的时候会生成到该位置
  "port": 5000, # 启动端口
  "we_token": "your wechat token", # 微信公众号配置的token
  "APP_ID": "your wechat appid", # 微信公众号的appid
  "APP_SECRET": "your wechat app_secret", # 微信公众号的app_secret
  "debug": false # 调试模式,默认即可
}
  1. 安装依赖:
pip install -r requirements.txt
  1. 启动应用:
python app.py

启动成功后,您可以在浏览器中打开 http://your_server_IP/robot/,如果看到Werobot页面,则说明启动成功。

  1. 在微信公众号中配置IP白名单和服务器地址,使公众号能够请求您的服务器。

配置完成后,您就可以使用您的公众号发送指令,实现女朋友的定时提醒服务并养成良好的生活习惯。

在这里插入图片描述

配置IP白名单为你的服务器IP

配置服务器地址为:http://你的服务器IP/robot/

配置完成,使用你的公众号,回复“帮助”,收到公众号回复的消息,即可完成

配置推送通知

同一点。

开发和贡献

我们欢迎开发者为该项目做出贡献。如果您有任何建议或发现了任何问题,请在GitHub上提交issue或pull request。

如有问题, 欢迎邮箱联系: kdupyn@163.com

### 实现微信公众号自动推送课程表功能 为了实现微信公众号定期向用户推送课程安排,需掌握微信公众平台提供的模板消息服务。此服务允许开发者通过特定的消息模板向用户发送通知。 #### 获取必要的权限和参数 在调用微信API之前,确保已获取`access_token`,这是访问微信公众平台接口所需的凭证[^1]。该令牌用于验证身份并授权请求。 #### 创建自定义菜单引导关注者订阅课程提醒 可以创建一个带有按钮的自定义菜单,当用户点击时会触发事件,从而收集用户的同意来接收课程表更新的通知。这一步骤并非强制性的,但对于提高用户体验很有帮助。 #### 设置模板消息 进入微信公众平台后台,在“功能”-> “添加功能插件” 中找到“模板消息”,从中挑选适合展示课程信息的模板样式,并记录下所选模板ID。如果默认选项无法满足需求,则可以根据官方文档申请特殊行业模板或通用模板。 #### 编写Python脚本定时发送课程表 下面是一个简单的Python程序框架,它利用了`scheduled`库来进行周期性任务调度,并借助`requests`库完成HTTP POST请求: ```python import requests from datetime import datetime import time import json def get_access_token(appid, secret): url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}" response = requests.get(url).json() return response['access_token'] def send_template_message(access_token, openid, template_id, data_dict): url = "https://api.weixin.qq.com/cgi-bin/message/template/send" params = { 'touser': openid, 'template_id': template_id, 'data': data_dict } headers = {'Content-Type': 'application/json'} payload = json.dumps(params) r = requests.post( url=url+f"?access_token={access_token}", data=payload, headers=headers ) result = r.json() print(result) if __name__ == "__main__": appid = '' # 替换成自己的APP ID secret = '' # 替换成自己的App Secret access_token = get_access_token(appid, secret) while True: now_time = datetime.now().strftime("%H:%M") if now_time >= "08:00" and now_time <= "09:00": openids = [] # 用户列表 for user_openid in openids: course_data = {"first": {"value":"今日课表"}, "keyword1":{"value":"周一上午第一节"}, "keyword2":{"value":"计算机网络基础"}, "remark":{"value":"记得带课本哦~"}} send_template_message(access_token,user_openid,'TM00745',course_data) break time.sleep(60*60) # 每隔一小时检查一次时间条件是否成立 ``` 上述代码片段展示了如何构建一个基本的工作流程:先取得有效的`access_token`;接着按照设定的时间间隔遍历目标用户群体并向他们分发定制化的课程表详情。注意这里的循环逻辑是为了简化说明而设计的实际应用中应考虑更复杂的场景如多时段推送等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值