Giter VIP home page Giter VIP logo

wechatpush's Introduction

基于GitHub Actions的微信自动化推送平台

工匠技能月之校园信息化管理平台设计源代码仓库

目前实现:

1、每日推送天气的时候顺便推送当天的课程;

2、如果下一节有课,在上课前推送提醒;

3、每日晚安心语及第二天课程推送。

不准备实现的功能:

实现原理:

​ 最开始只有每天的天气推送(每天只需要定时推送一次就好),实现很简单,利用GitHub Actions创建一个定时的工作流就行。 ​ 增加需求后,最开始的想法不变,利用GitHub Actions创建工作流多跑项目,让程序一直执行,直到“晚安心语”推送完后就结束。但是有个GitHub Actions有两个致命的限制:1、一个月能够执行项目的总时常为2000分钟,程序一直执行很快就会花光时间! 2、假如你设置的每日推送时间是 7:40 , 由于GitHub Actions是排队执行,如果是高峰期会导致项目延迟执行(一般延迟20-40分钟),所以第二点直接否定了我们想要准时的需求。 值得注意的是,如果我们手动触发GitHub Actions里面的工作流,则是实时执行(本实例部署时间一般是50s左右)。所以,问题转变,通过用腾讯云函数的定时功能来触发GitHub Actions里面的工作流文件,达到曲线救国! ​ 利用腾讯云函数定时触发的功能,只需要在程序设置的每日提醒、每节课上课提醒、每日晚安提醒时间的前两分钟触发Actions里面的工作流文件就能完美解决GitHub Actions时间限制,和定时延迟的弊端。

项目依赖:

​ GitHub是一个由美国公司GitHub,Inc.开发的基于Git的版本控制和协作工具。它是世界上最大的代码托管平台之一,提供免费的代码仓库供开发者上传、存储和分享自己的代码,同时支持协作和版本控制,可以帮助开发团队高效协作、追踪项目进度和解决问题。在本例中,我们主要利用Github提供的工作流托管项目云端运行。

​ 微信公众平台是指微信推出的一套公众号运营工具,是企业或个人在微信平台上开设、推广和管理公众号的一站式服务平台。公众号开发者可以通过微信公众平台进行账户的注册、设置、推广、内容管理和数据分析等操作。同时,微信公众平台也提供了一系列API来帮助开发者更方便快捷地进行公众号开发。在本例中,我们主要利用微信公众平台提供的测试号进行消息的推送。

​ 腾讯云函数是一项无服务器计算服务,它允许开发者以代码的形式编写并在云中运行简单的、独立的函数。使用云函数,开发者可以在不需管理服务器和运维的情况下,快速构建和迭代应用程序。腾讯云函数支持多种语言(如Node.js、Python、Java等),用户可以在几分钟内创建函数并获得一个独立的HTTP URL来触发执行,使用流量即付的计费模式,在函数规模自动上升的情况下,仅需按实际使用量支付费用。在本例中,我们主要利用腾讯云函数提供的定时触发服务,触发函数定时执行。

4、天行数据(用于获取晚安心语内容)(https://www.tianapi.com/)

​ 天行数据是一个提供各类 API 接口的数据服务提供商,涵盖了多种数据类型和行业,如新闻、股票、天气、影视等领域,可以为开发者提供定制化的数据服务。用户可以通过向天行数据提交请求,获取到对应 API 接口返回的数据结果,以便进行二次加工处理或直接应用于自己的项目中。在本实例中,我们使用了天行数据提供的“晚安心语”API,通过账户的方式获取到了每天的晚安心语内容并加以利用。

二、实现效果图

1、每日提醒

每日提醒

2、上课提醒

上课提醒

3、晚安心语及第二天课程提醒

晚安心语

三、步骤

1、拉取GitHub项目

将仓库里面的项目fork到自己仓库 GitHub项目地址:https://github.com/ghwmx/WeiXinPost

2、更改项目中的配置文件:config.py

更改配置文件 在这里插入图片描述

3、微信公众平台相关配置,登录微信公众平台,免费注册接口测试公众号

复制appIDappsecret 填入config.py 对应位置

在这里插入图片描述

②复制appIDappsecret

在这里插入图片描述

③填入config.py 对应位置

在这里插入图片描述 注意要填写在双引号里面

④复制 config.py 文件最下面的模板,分别添加到微信公众平台

解释:模板中{{***}}以外的文字是固定显示,如图第90行代码,“今天是破壳日的第:{{...}} 天”,这句话对应程序是一个计时器,可以更改为:今天是和。。。恋爱的第{{....}} 天、今天是。。。。等等,根据自己需求更改。 同理,“距离开学还有:{{....}} 天” ,是一个倒计时,可以更改为生日等等,生日暂时只支持阳历,农历可以根据自己需求更改主程序。 复制的时候记得去除每行前面的 “#”,可以先复制到txt文档里面整理好后再添加。 在这里插入图片描述

复制模板 1并添加:

在微信公众平台,往下找到“模板消息接口”---->新增测试模板---->模板标题(就是微信上看到的标题)---->模板内容为刚才复制的内容----->提交 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

⑤复制模板ID,填到config.py的 template_id1

⑥后面的上课提醒模板 和 晚安心语模板同理

在这里插入图片描述

⑦扫描测试二维码,关注公众号,关注后复制微信号,填入config.py中的user

注意:需要填写到双引号里面 在这里插入图片描述 在这里插入图片描述

⑧保存修改

在这里插入图片描述

至此,微信公众平台配置完成!

4、配置GitHub Actions

①打开actions工作流文件模板.yml,并复制里面所有内容

在这里插入图片描述 在这里插入图片描述

②点击Actions,配置工作流文件

在这里插入图片描述 选择 set up a workflow yourself 在这里插入图片描述 删除所有内容,并将复制的内容粘贴到里面,保存 在这里插入图片描述 在这里插入图片描述 点击Actions,会出现刚才新建的工作流文件 在这里插入图片描述 测试工作流程是否正确 在这里插入图片描述 在这里插入图片描述 *若运行失败,点击进去,查看运行过程中产生的错误 在这里插入图片描述 *定位问题出现的原因,是环境配置不正确,还是程序本身的问题。以下问题是程序 main.py 第79行的函数:get_Today_Class运行时发生错误。原因:没有配置开学时间 在这里插入图片描述

③获取GitHub Token为后续腾讯云函数配置做准备

点击个人设置 在这里插入图片描述

滑动到最下面,选择‘开发者设置’ 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述 至此,github配置完成!

5、配置腾讯云函数

①登录后搜索‘云函数’

在这里插入图片描述

在这里插入图片描述

接下来会有一些身份验证 在这里插入图片描述

②完成相关认证后,选择‘函数服务’,‘新建’

在这里插入图片描述

选择‘从头开始’,函数的名字随意,运行环境选择‘Python3.6’ 在这里插入图片描述

接下来更改函数体中的内容,打开GitHub中的 ‘txPost.py’ 复制所有内容 在这里插入图片描述

在这里插入图片描述

粘贴到窗口中,替换其中的token,用户名等信息 在这里插入图片描述

用户名/项目名 如图所示 在这里插入图片描述

其余设置为默认 在这里插入图片描述

在这里插入图片描述

③创建触发函数的定时触发器,按图操作即可在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

恭喜,你已经成功完成所有配置!

结束语

​ 因为本次的校园信息化平台建设活动,有幸接触到了微信公众号部署以及实现,完成了初中的自动化推送的设想,在此过程中也是边学习边收获,受益满满!谢谢你看到这里!

wechatpush's People

Contributors

poboll avatar woc66666 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.