企业微信推送课表(其实可以推送一切)

企业微信推送课表

  • 作者:申也
  • 个人网站:申也个人网站(www.dongshengye.space)
  • 个人公众号:申也
  • B站:申也_
  • 本项目交流群:474570120

示例

image-20220925104226137image-20220925104405563

image-20220925104443856image-20220925104505000

文件结构

wxComMy
├── common	//通用文件
│   ├── class.tips.js
│   └── weather.city.js
├── config	//配置文件
│   ├── class.config.js
│   ├── weather.config.js
│   └── yi.config.js
├── index.js	//入口文件
├── package-lock.json
├── package.json
└── request	//主要网络请求文件
    ├── class.request.js
    ├── weather.request.js
    └── yi.request.js

快速开始

克隆仓库

请在公众号申也后台,发送企业微信推送,获取源码链接。

生成依赖

npm install

企业微信准备

企业微信注册

https://work.weixin.qq.com/

直接注册即可

创建应用

如下依次点击,之后会让你填写一些信息,按照自己需求填写即可

image-20220926081051190
获取配置信息
配置说明

如果你想操作你创建的应用,那么需要去获取一些信息。

image-20220926081453573

  • corpid:企业微信id
  • corpsecret:应用密码
  • agentid:应用代码
如何获取

agentid和corpsecret按照如下方式获取

image-20220926081658100

corpid如下图所示

image-20220926081818298

下载微信插件

想要将企业微信发送到微信客户端,需要加载企业微信插件,具体流程如下

image-20220926083655758

测试

创建好应用之后,可以点进去应用,并点击发送消息,查看能否接收到消息。

如果可以,那我们接下来利用代码实现自动化。

image-20220926083833740

修改配置

配置文件说明

所有配置文件都在config文件夹中,大家从上文文件结构中可以看到有两个config.js文件。

  • weather.config.js:推送天气的配置文件
    • corpId:请看上文
    • corpSecret:请看上文
    • agentId:请看上文
    • province:省份
    • city:城市
  • class.config.js:推送课表的配置文件
    • corpId:请看上文
    • corpSecret:请看上文
    • agentId:请看上文
    • classMo:我女朋友的课表
    • classSheng:我的课表
配置文件示例
天气示例

image-20220926082523719

课表示例

image-20220926082442197

注意

  1. 我用了两个应用来分别发送我和我女朋友的课表,所以corpSecretagentId都为一个二维数组

  2. 课表是7x5的数组,代表的是一周七天,一天五节课,从周日到周一

  3. 课表最小单元的存储为JavaScript中的对象,有三个属性名

    • name:课程名称

    • pos:上课地点

    • time:从第几周开始,到第几周结束(连字符为 - )

上传服务器

如果你有服务器,本地调试成功之后直接将项目文件打包,并传输到你的服务器。

需要环境

  • node
  • npm

具体linux或window如何配置环境,可以在网上看一下其他的博客。

注意:

  1. 本项目入口文件为index.js,配置好环境之后,首先可以在服务器进行测试,node index.js,查看自己的微信能否接收。
  2. 入口文件实现的原理为node中的child_process创建一个 shell,然后在 shell 里执行命令。*但是!*我在我本地运行和在服务器运行结果不一样,因为服务器环境和本地环境不同。最稳妥的方法是下文细讲

至于我的实现方法,是在linux系统上安装了宝塔面板,然后通过宝塔面板的计划任务进行的。

具体可以查看我的另一篇博客:

https://blog.csdn.net/qq_51490212/article/details/126919785

其中有一些宝塔面板的操作方法,与此次几乎没有差别。

结语

至此,你就实现了企业微信推送的所有功能。

很明显的可以看到,这里用到的逻辑很简单,就是

  1. 将你当做企业微信中的一位员工
  2. 用代码给员工发消息,实现自动化
  3. 上传服务器实现定时推送

接下来我们详细说明一下各个文件的具体作用。

详细说明

所用工具包

  • axios:异步网络请求
  • moment.js:时间处理

文件结构

wxComMy
├── common	//通用文件
│   ├── class.tips.js
│   └── weather.city.js
├── config	//配置文件
│   ├── class.config.js
│   ├── weather.config.js
│   └── yi.config.js
├── index.js	//入口文件
├── package-lock.json
├── package.json
└── request	//主要网络请求文件
    ├── class.request.js
    ├── weather.request.js
    └── yi.request.js

config文件夹

很明显,这是一个配置文件夹,也是用户需要修改的一个文件,前文已经说得很多,这里不再赘述

common文件夹

一些通用的,对代码整体性没有影响的文件。

  • class.tips.js:存放激励语录,用于发课表时附带
  • weather.city.js:存放城市对应代码,通过代码获取天气。

request文件夹

主要文件,用于逻辑实现和发送请求。

整体说明
  1. class.request.js

    image-20220926090240034
  2. weather.request.js

    image-20220926090253155

可以看到,两个文件的主要函数大差不差

  1. 获取token
  2. 获取信息
  3. 将token和信息进行发送
课表文件 class.request.js

这其实是整个逻辑中最复杂的地方,因为要对课表进行处理

主要功能如下:

  1. 获取token
  2. 判断本周是第几周
  3. 根据本周周次获取本周的课表
  4. 判断今天是本周第几天
  5. 根据第几天获取明天的课表
  6. 包装课表信息
  7. 将信息携带token发送到微信服务器,微信自动发送信息

可以看到,其中最重要的是对时间的处理,所以我用到了moment.js这个包,这是一个很方便的处理时间的包。

他的中文官网为:http://momentjs.cn/

天气文件 weather.request.js

这里和class.request.js文件差不多,只是将获取课表信息变成了获取天气信息。

获取天气信息更加简单

  1. 获取token
  2. 根据weather.config.js文件中的province与city获取城市代码
  3. 将城市代码发送给外部api获取天气信息
  4. 包装天气信息
  5. 将信息携带token发送到微信服务器,微信自动发送信息

入口文件index.js

作用

因为能每次运行文件的时候,都去node一遍request中的所有文件,所以我用代码替我node运行。

代码逻辑
  1. 读取request目录
  2. 进入遍历,生成命令,并执行命令
注意

由于实现方法是用node中的child_process模块,这个模块受运行环境影响比较大,最保险的方法,是直接从根目录出发,去运行文件。

将order命令改成如下即可

let order = `/www/server/nodejs/v14.17.6/bin/node ${__dirname}/request/`

总结

所有代码已上传本人gitee,特地给大家做了一个交流群,大家有什么问题可以在群里交流

qq群号:474570120

我也会不定期在群里回答大家问题。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

申也.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值