当初说过的刷题你刷了吗?LeetCode 的网页估计都没打开过吧?选择躺平了?不!我要让你卷起来。
最近倒腾了下 云函数
,发现腾讯云每个月都有 5w 的免费额度,对于自己使用完全足够,然后在 云函数
中加入触发 企微
机器人的逻辑,这样就可以达到 企微
群通知的目的。所以,基于这个思路,我在 企微
中加入了获取 LeetCode 每日一题的逻辑,然后将题目的详情内容通过 企微
的 webhook 地址来通知群机器人,云函数
还可以加 定时触发
,可以设置每天什么时候触发函数通过机器人,所以,我选择了上午 9 点和晚上 9 点来通知,为了更好的明天,可千万不要忘了刷题!来看下最终的效果图:
下面会大致讲解下操作流程,代码部分不会讲,可以直接用我开源的代码复制粘贴进去即可,但需要替换一下你自己 企微
机器人的 webhook 地址
一、创建云函数
先给下几个地址:
- 快速入门文档:https://cloud.tencent.com/document/product/583/37509
- 云函数控制台地址:https://console.cloud.tencent.com/scf/list
这里我选择的是用 Node.js 来开发云函数,选择它并不是因为我会,而是他可以在线依赖安装,省去了不少本地上传依赖的烦恼,再加上 js 这种弱语言,写起来可爽了,只要知道思路,就 google 这个 api 怎么写,拼拼凑凑就写出来了。
我们先进入云函数控制台,创建个 云函数
:
image.png
点击 新建
进入 云函数
的创建流程:
image.png
我们选择 从头开始
这个模板,填入函数名称为 leetcode
,运行环境选择 Nodejs 16.13 版本,然后点 完成
进入 云函数
管理页面:
image.png
红色框框区域就是云函数编辑逻辑代码的区域,函数中的代码是模板 demo:
image.png
我们可以点击 部署并测试
来验证 云函数
的执行逻辑,执行过程和结果可以在 执行摘要
和 执行日志
中进行查看
二、云函数开发
由于要开发 leetcode 逻辑,所以,搜了下可有现成的接口,正好被我搜到一篇 《Leetcode爬虫实践》(http://cattiek.site/2019/03/03/Leetcode爬虫实践/)的文章,并且 每日一题
和 题目详情
免登陆就可以通过请求拿到结果,非常符合我们的需要,这里不贴开发代码了,讲下一下开发过程中遇到的注意点:
1、云函数
给的实例代码是同步代码,对于网络请求这种异步任务,函数的返回要写成异步的,也就是写成 callback 这种回调,云函数
文档也给出了说明 https://cloud.tencent.com/document/product/583/67790
2、在线依赖安装
需要自己手动配置 package.json
文件,这里我加了 request
和 turndown
两个依赖,一个是请求接口使用,一个是将 html 内容转成 markown 内容(企微不支持 html 内容,但支持 markdown),指导过程如下:
依赖内容:
代码语言:javascript复制{
"dependencies": {
"request" : "2.81.0",
"turndown": "7.1.1"
}
}
注意:这一块必须配置,不然,云函数的执行会报找不到函数
3、企微
不支持 html 格式的内容,所以这里使用了 turndown 库来将 html 转成 markdown 格式来内容推送,但由于 企微
的 markdown 又不支持图片的展示,真蛋疼,所以,用了迂回的方式,将图片 ![]()
的格式替换成了链接 []()
格式,可以通过点击链接来查看内容 ,效果如下:
image.png
三、创建机器人
在 企微
群里面选择 添加机器人
:
然后选择 新建一个机器人
:
输入机器人的名称,然后点击 添加机器人
:
我们点击 复制地址
,复制下我们机器人的 webhook 地址。
四、导入函数代码
leetcode 代码仓库链接在 https://github.com/MRwangqi/tencent-function,我们将 leetcode.js 的代码直接拷贝进云函数中:
这个地方需要粘贴进我们企微的机器人的 webhook 地址,然后点击 部署并测试
即可看到企微收到了一条机器人的通知,效果如下:
image.png
五、定时触发
选择 触发管理
的 创建触发器
:
由于其他几个触发周期都太死板,我们这里选择自定义触发周期:
输入 Cron 表达式 0 0 9 */1 * * *
,该表达式的意思是:每天 9 点触发
点击提交即可
六、总结
这下再也不用怕没人喊你刷题了,为了让你们卷起来,我操碎了心!
再贴一下源码地址:https://github.com/MRwangqi/tencent-function