python版本微信每日图文推送------天气预报

基于企业微信的每日图文推送

  • 前言
  • 配置教学
    • 一、准备配置数据
    • 二、配置函数
      • 方式一、部署在云服务器(没有服务器的别看!云函数看方式二!)
      • 方式二、部署在腾讯云函数
    • 三、配置页面
      • 方式、部署在云函数
    • 四、配置消息
    • 五、更新函数
      • 方式二、部署在云函数
    • 六、重要提示

前言

支持以下功能

  • Bing必应 每日壁纸
  • 金山词霸 每日一句
  • ONE·一个 一图一句
  • 和风天气 多地区天气预报
  • 农历 / 公历多日期纪念日 / 单日提醒
  • 可选的单图文 / 多图文推送模式
  • 自带图文展示页
  • 效果图
    python版本微信每日图文推送------天气预报_第1张图片

配置教学

企业ID: 应用AgentID: 应用Secret: 想要收到推送的时间: (以下均非必填)
和风天气Key(如果需要天气预报):天行Key(如果需要彩虹屁): 需要显示天气预报的城市 (省/市-市/县/区,可以多个,例如成都-双流)
纪念日时间及事件(每年固定时间,可以多个,支持农历/公历,例如:猪猪的生日:农历2001-01-01):单日时间及事件(某一年特定,可以多个,支持农历/公历,例如:在一起:2020-01-01)
自定义标题(例如:给猪猪的推送):称呼(例如:宝贝~): 第一段文字(例如:记得喝水哦~): 固定头图链接或者文件,不填使用随机图片
随机头图类型(动漫、妹子、风景、不显示图片):

一、准备配置数据

  1. 企业微信网页(链接:https://work.weixin.qq.com/)-右上角扫码登录-注册企业
    python版本微信每日图文推送------天气预报_第2张图片

  2. 在 我的企业,找到企业ID(即环境变量corpid)并记录下来
    python版本微信每日图文推送------天气预报_第3张图片

  3. 在 应用管理-创建应用
    python版本微信每日图文推送------天气预报_第4张图片

  4. 上传应用LOGO并填写应用名称,即机器人的头像与名字(这里的图片和名字都可以修改),可见范围按需选择,选择企业条目,即表示企业内所有人可见
    python版本微信每日图文推送------天气预报_第5张图片

  5. 进入应用,找到AgentId(即环境变量agentid)并记录
    python版本微信每日图文推送------天气预报_第6张图片

  6. Secret(即环境变量corpsecret)需要发送到 企业微信手机端-企业微信团队 才能查看,接收到并记录
    python版本微信每日图文推送------天气预报_第7张图片

  7. 需要天气预报的话,还需要注册和风天气开发者(链接:https://id.qweather.com/#/login),登录后前往控制台
    python版本微信每日图文推送------天气预报_第8张图片

  8. 完成开发者认证以后,在 应用管理-创建应用-免费开发版-输入应用名称-Web API-输入KEY名称-完成创建,得到这一串KEY(即环境变量qweather)并记录
    python版本微信每日图文推送------天气预报_第9张图片

以上,基本的配置数据已经全部到手。

二、配置函数

所有命令务必复制完整,例如pip3指令末尾有个-t空格.
最后一行命令务必要按下Enter换行键执行完成
重建前记得备份配置文件config.py(如果有填写,填写在函数配置-环境变量的可以忽略)

方式一、部署在云服务器(没有服务器的别看!云函数看方式二!)

  1. 企业微信后台(链接:https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome)-应用管理-刚刚创建的应用-最下方企业可信IP-点击配置-填入服务器IP-确定
    方式1终端直接部署
  2. 复制以下命令,在服务器上选择一个文件夹,打开终端,粘贴并执行。鼠标右键点击终端窗口即粘贴,Enter换行键执行
git clone https://gitee.com/thund1r/daily-info.git
cd daily-info
pip3 install --upgrade -r requirements.txt -t .

  最后一行命令-t空格后面有个点,务必复制完全,执行到最后务必多按几下Enter换行键确保执行完成
  完善config.py中的配置,参考腾讯云函数

  自行搜索自己使用的服务器/面板如何设置定时执行index.py即可

方式二、部署在腾讯云函数

  1. 前往腾讯云官网(链接:https://cloud.tencent.com/),扫码登录,完成身份认证。腾讯云函数按月收费,但是云+校园(链接:https://cloud.tencent.com/act/campus?utm_source=qcloud&utm_medium=navigation&utm_campaign=campus)针对25岁以下用户免学生认证享受1.08元购买一年的腾讯云函数个人标准版。
    python版本微信每日图文推送------天气预报_第10张图片

  2. 云函数控制台(链接:https://console.cloud.tencent.com/scf/) -函数服务-新建

1.从头开始-事件函数-环境 Python3.7,自行修改函数名称
2.忽略函数代码,来到高级设置-内存 64M-执行超时时间100秒-填入环境变量
3.如果觉得这里配置环境变量太麻烦,可以跳过此处,在后续的代码文件config.py中配置。
4.两边只需要配置一处,此处优先级大于config.py。更建议在此处填写完配置,方便后续更新。
5.各环境变量含义如图,务必注意填写的格式,最后一行link请在后续完成配置页面之后再填写。
6.网络配置-勾选固定出口IP
7.触发器配置-自定义创建-定时触发-自定义触发周期-Cron表达式示例0 30 9 * * * *,即早上9点30分发送消息,前三位依次是秒 分 时,具体参考Cron相关文档。建议不要设置在整点
待函数加载完成,跳转到函数配置页-网络配置-公网固定IP,把IP复制下来
回到企业微信-应用管理-刚刚创建的应用-最下方企业可信IP-点击配置-粘贴进去-确定

python版本微信每日图文推送------天气预报_第11张图片
python版本微信每日图文推送------天气预报_第12张图片

  回到云函数控制台,函数管理-函数代码-在线编辑-终端-新终端,复制以下命令,鼠标右键点击终端窗口即粘贴,Enter换行键执行

rm -rf src
git clone https://gitee.com/thund1r/daily-info.git
mv daily-info src
cd src
pip3 install --upgrade -r requirements.txt -t .

最后一行命令-t空格后面有个点,务必复制完全
  1.执行到最后务必多按几下Enter换行键确保执行完成,终端出现进度条、点击左侧src文件夹出现如图所示一堆文件即可。
python版本微信每日图文推送------天气预报_第13张图片

  2.如果前面没有填写环境变量,还需要在src文件夹-config.py文件完善配置,在冒号右边的""里面填写相应的数据即可,务必注意备注的格式要求

  3.点击部署,部署成功后,点击测试,查看日志输出以及微信消息执行日志末尾显示“企业微信消息发送成功”、微信收到消息,但是打不开卡片。接下来配置可以点击开的图文详情页面。

三、配置页面

方式、部署在云函数

  1. 触发管理-创建触发器
    python版本微信每日图文推送------天气预报_第14张图片

  2. 触发方式-API网关触发-勾选启用集成响应

  3. 点击复制访问路径最后的复制按钮python版本微信每日图文推送------天气预报_第15张图片

  4. 填写到函数配置-编辑-环境变量-link或填写在config.py中

  5. 点击测试发送一条信息,点击卡片,能顺利打开页面显示内容即为成功。

四、配置消息

设置在手机微信上接收企业微信消息

  1. 企业微信后台-我的企业-微信插件,微信插件Logo可以自定义,即你从微信看到这个企业的头像
  2. 下滑到倒数第二个设置-邀请关注-手机微信扫码关注,有必要的可以下载保存
  3. 企业微信移动端-设置-新消息通知-仅在企业微信中接收消息-取消所有勾选-完成(没有就忽略)
  4. 还是没有消息请查看下方官方解答,检查接收消息的前提条件
    让别人接收到消息
    把邀请关注二维码发给TA,手机微信扫码关注,会提示“点击验证身份,加入XXXX”,完成验证即可接收到后续消息。

五、更新函数

  所有命令务必复制完整,例如pip3指令末尾有个-t空格.
  最后一行命令务必要按下Enter换行键执行完成
  重建前记得备份配置文件config.py(如果有填写,填写在函数配置-环境变量的可以忽略)
  一切更新问题都可以通过删除整个文件夹,重新拉取代码并安装依赖来解决

方式二、部署在云函数

  1. 备份config.py中的配置(在函数配置中填写的可以忽略)
  2. 云函数编辑器-终端 - 新终端,复制以下命令,鼠标右键点击终端窗口即粘贴,Enter换行键执行
cd src
git stash
git pull
git stash pop
pip3 install --upgrade -r requirements.txt -t .

  最后一行命令-t空格后面有个点,务必复制完全
  执行到最后务必多按几下Enter换行键确保执行完成
  终端出现红红绿绿的加减号最后出现新的命令行等待输入,WARNING信息不用管,只要没有红色Error信息即可。

  • 如果配置在config.py里面的,可能会因为已经修改过代码与更新后的文件有冲突,请点击采用传入的更改以保留自己填写的配置内容。
  • 如果配置丢失请重新填写配置信息。
    如果出现错误,请复制以下命令-云函数编辑器-终端 - 新终端-鼠标右键点击终端窗口即粘贴,Enter换行键执行,重新配置
rm -rf src
git clone https://gitee.com/thund1r/daily-info.git
mv daily-info src
cd src
pip3 install --upgrade -r requirements.txt -t .

  最后一行命令-t空格后面有个点,务必复制完全
  执行到最后务必多按几下Enter换行键确保执行完成
3. 点击部署-测试-查看日志与微信消息

六、重要提示

  1. 常见错误
  1. “No module named XXXXX” 日志倒数第三行中出现“No module named XXXXX”,说明函数没有找到依赖。情况一,没有进入src文件夹就运行了pip3指令,请先执行cd命令到文件夹,再执行pip3指令。情况二,pip3
    指令执行有误。请务必完整复制完整,整条pip3指令,末尾-t空格后面有个点,复制完整再粘贴执行。

  2. “获取企业微信access_token失败” 请检查corpid、corpsecret、agentid是否拼写正确,值是否正确,是否有多余空格字符。

  3. 没有找到XX这个地方/获取XXID失败 请检查城市填写格式是否符合要求,格式市-市/区/县,不要携带市/区/县等后缀,例如成都-双流。检查和风天气qweather是否拼写正确,key是否填写正确,是否有多余空格字符。

  1. 其他错误

请先检查配置信息是否填写正确,包括名称(key)的拼写是否正确,内容(value)的格式是否正确,值是否正确,是否有多余的空格。
无法解决,请先备份config.py(如果有填写,填写在函数配置环境变量的可以忽略),删除整个src文件夹,重新执行配置函数时拉取代码并安装依赖的命令。
仍然无法解决,请在文首扫码加入DailyInfo交流群,备注部署方式,发送日志截图。

  1. 环境变量
    python版本微信每日图文推送------天气预报_第16张图片
    python版本微信每日图文推送------天气预报_第17张图片

  2. 终端
    如果终端执行时间过长,可以结束终端(终端小窗右边的垃圾桶图标),重新开新终端执行命令。

  3. 推送延迟
    由于准点可能是云函数和api的触发高峰期,可能会导致运行拥堵,由于超时时间设置为900秒即15分钟。如果延迟严重,请尝试不设置在准点或者把超时时间修改为100秒。python版本微信每日图文推送------天气预报_第18张图片

  4. 日志
    腾讯云日志服务CLS将于2022年9月5日开始执行按量计费。请在配置并测试好云函数之后及时贯日日志投递并删除日志。操作如下:

  5. 前往 云函数控制台(链接:https://console.cloud.tencent.com/scf/lis),点击进入云函数-函数管理 - 函数配置-右上角编辑-日志配置-取消勾选日志投递

  6. 在日志服务 CLS 控制台日志主题(链接:https://console.cloud.tencent.com/cls/topic) -中删除相应日志主题,避免后续产生不必要的费用。

  7. 点击上方地名,等待片刻,确认所有地区尾部都出现0,即所有地区日志主题都已经删除。
    如果其他地区尾部出现不为0的情况,请点击切换至该地区并删除日志主题。

  8. 配置
    所有环境变量均可通过直接修改 config.py 完成配置,系统环境变量优先级高于 config.py 。更推荐配置在环境变量中,方便后续更新。

  9. 截断
    受企业微信API限制,超出字数限制部分文字将自动截断不展示。图文展示页面不受此限制,但仍受图片链接长度和文字长度的制约,请合理安排多地区天气、多日期提醒等内容。

  10. 命令
    所有命令务必复制完整,例如pip3指令末尾有个-t空格.
    最后一行命令务必要按下Enter换行键执行完成
    重建前记得备份配置文件config.py(如果有填写)
    填写在函数配置-环境变量的可以忽略

  11. 云服务器部署/重建

git clone https://gitee.com/thund1r/daily-info.git
cd daily-info
pip3 install --upgrade -r requirements.txt -t .
  1. 云函数部署/重建
    终端-新终端运行
rm -rf src
git clone https://gitee.com/thund1r/daily-info.git
mv daily-info src
cd src
pip3 install --upgrade -r requirements.txt -t .
  1. 云服务器更新
git stash
git pull
git stash pop
pip3 install --upgrade -r requirements.txt -t .
  1. 云函数更新
    终端-新终端运行
cd src
git stash
git pull
git stash pop
pip3 install --upgrade -r requirements.txt -t .

对功能的一些唠叨
• 必应、金山词霸、一个图文都是现成的接口,没啥说的。
• 天气预报

包含天气情况、气氛范围以及穿衣建议,支持多个地区的天气,方便需要多地天气以及异地恋的朋友。由于和风天气的接口不提供具体的天气图片,所以用的正则表达式匹配文字,显示对应的emoji表情☀️⛅☁️️☃️️️️️,嗯,《非常智能》。

• 日期提醒

日期提醒支持纪念日与单日两种类型。纪念日每年都有,例如“距离结婚纪念日还有XX天”,会循环计算离下一次纪念日的时间。单日只有某一年有,过去或者未来均可,例如“和某某在一起已经XX天”、“距离某某考试还有XX天”。
均支持农历与公历,农历在年份前加字母n就好。日期提醒统一自动排序,越靠近的日期越在上方,到期的时间emoji会从日历️变成五角星,以提升提醒的有效性。

• 推送模式

推送支持单图文/多图文两种推送模式。项目原来是多图文,每篇图文内容纯粹,不会各种信息汇合在一起,但是卡片能显示的信息十分有限,更多的消息需要点击进去查看,效率降低。于是又做了单图文的版本,在图文的描述区域显示大部分信息,更加直观方便。

• 图文展示页面

图文卡片均支持点击,链接前往图文详情展示页。页面来源于我的另一个小项目Diary——基于 Python Fastapi
的简易图文展示服务,通过URL传递参数实现,不存储任何数据,也已经开源。

Gitee地址:https://gitee.com/thund1r/diary
Github地址:https://github.com/Thund1R/diary

你可能感兴趣的:(python,微信,开发语言)