使用企业微信插件,自行搭建Twikoo的消息提醒API,像收女神微信消息一样接收新评论提醒!
Twikoo目前提供了Server 酱、Qmsg 酱、推送加 3种即时通知方式,可对我而言,总感觉不得劲儿。之前用推送加,却不能直接接收消息,URL也得手动复制查看,烦是不烦。
效果预览
废话少说,自己琢磨清楚,就分享出来。通过本篇,你将获得:
- 一个属于自己,不被别人卡脖子的Twikoo新评论提醒服务,不限量!!
注意事项
本文涉及修改 Twikoo 云函数源代码,请自行评估是否继续。

⊙ 服务对比

⊙ 自定义消息提醒API效果
注册企业微信
该功能通过企业微信的插件实现,因此注册一个企业微信。太简单了,此处流程省略。
企业微信创建一个应用
在“企业微信——应用管理”最底部的“自建”应用处,新建一个“应用”。名称比如就叫消息通知
,配置完成后记录下应用页面的AgentId
和Secret
。注意,查看Secret
需要安装一个企业微信,查看完可以卸载。
在“企业微信——我的企业”底部,记录下“企业ID”。
至此,微信配置完成,开始配置提醒API。
创建API云函数
首先参考Heo 的教程,创建一个腾讯云或vercel版本的云函数。《微信菌:利用企业微信搭建微信消息提醒API》
我使用了腾讯云环境(也没多贵,相比vercel更稳定),简单说下过程:
可以复用之前 Twikoo 那个云开发环境,直接创建一个新的云函数,名称自定义如weixin-push
,选择helloworld 空白模板函数
,Python3.6
环境, 128MB
就OK了。下一步粘贴下面的代码,点击创建:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# -*- coding: utf8 -*-
import requests
import json
def getTocken(id,secert,msg,agentId):
url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + id + "&corpsecret=" + secert
r =requests.get(url)
tocken_json = json.loads(r.text)
# print(tocken_json['access_token'])
sendText(tocken=tocken_json['access_token'],agentId=agentId,msg=msg)
def sendText(tocken,agentId,msg):
sendUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + tocken
# print(sendUrl)
data = json.dumps({
"safe": 0,
"touser" : "@all",
"msgtype" : "text",
"agentid" : agentId,
"text" : {
"content" : msg
}
})
requests.post(sendUrl,data)
def main(event, context):
try:
apiid=event['queryStringParameters']['id']
apisecert=event['queryStringParameters']['secert']
apiagentId = event['queryStringParameters']['agentId']
apimsg = event['queryStringParameters']['msg']
except:
apimsg = '有必填参数没有填写,请检查是否填写正确和格式是否错误。详情可以参阅:https://blog.zhheo.com/p/1e9f35bc.html'
status = 1
else:
try:
# 执行主程序
getTocken(id=apiid,secert=apisecert,msg=apimsg,agentId=apiagentId)
except:
status = 1
apimsg = '主程序运行时出现错误,请检查参数是否填写正确。详情可以参阅:https://blog.zhheo.com/p/1e9f35bc.html'
else:
status = 0
# print(event)
# print("Received event: " + json.dumps(event, indent = 2))
# print("Received context: " + str(context))
# print("Hello world")
status_str = json.dumps({
"status":status,
"msg":apimsg
})
return(status_str)
|
配置好访问服务(如果第一次创建,参考 Twikoo 教程还需要配置安全域名等):

⊙ 配置云函数访问服务
至此,云函数创建完成。可以使用下面这样的方式,拼接一个URL
,浏览器访问,看看手机微信能不能接收到消息。
云函数的访问服务URL + 触发路径 + ?id=你的企业微信ID + secert=上文记录的secert + Id=上文记录的AgentId + &msg=随便测试一下吧
如我下面这样的:
https://blogpkly-13278c-1258453354.ap-shanghai.app.tcloudbase.com/weixin-push?id=ww*******&secert=Ne******&agentId=1000003&msg=随便测试一下吧
浏览器返回以下内容,说明配置完成(msg后的内容,是Unicode编码后的“随便测试一下吧”内容,点击这里可以转换 )。
1
|
{"status": 0, "msg": "\u968f\u4fbf\u6d4b\u8bd5\u4e00\u4e0b\u5427"}
|
修改Twikoo云函数
找到腾讯云开发云函数/twikoo/函数代码/node_modules/twikoo-func/index.js
,在不破坏云函数原本逻辑基础上,总共修改 3 处。
Warning!
注意:打开云函数在线函数代码查看页面后,切不可直接关闭网页,关闭前点击“函数配置”切换到其他页面,再关闭,否则腾讯云网页抽风,再进入一直提示“拉取代码失败”,就很麻烦。
第一处修改
在云函数/twikoo/函数代码/node_modules/twikoo-func/index.js
大约 866 行,可 Ctrl+F 搜索定位到Promise.all
在await Promise.all([
内容下,增加一行noticeWinxinPush(comment)
,改完后如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 发送通知
async function sendNotice (comment) {
if (comment.isSpam && config.NOTIFY_SPAM === 'false') return
await Promise.all([
noticeMaster(comment),
noticeReply(comment),
noticeWeChat(comment),
noticePushPlus(comment),
noticeWinxinPush(comment),//新增内容
noticeQQ(comment)
]).catch(err => {
console.error('邮件通知异常:', err)
})
}
|
第二处修改
在云函数/twikoo/函数代码/node_modules/twikoo-func/index.js
大约 908 行,可 Ctrl+F 搜索定位到const IM_PUSH_CONFIGS = [
在'PUSH_PLUS_TOKEN',
内容下,增加一行'WXPUSH_KEY'
,改完后如下:
1
2
3
4
5
6
7
8
9
10
|
// 博主通知
async function noticeMaster (comment) {
if (!transporter) if (!await initMailer()) return
if (config.BLOGGER_EMAIL === comment.mail) return
const IM_PUSH_CONFIGS = [
'SC_SENDKEY',
'QM_SENDKEY',
'PUSH_PLUS_TOKEN',
'WXPUSH_KEY'//新增内容
]
|
第三处修改
在云函数/twikoo/函数代码/node_modules/twikoo-func/index.js
大约 1005 行,可 Ctrl+F 搜索定位到pushplus 通知
在适当位置增加以下内容:
1
2
3
4
5
6
7
8
9
|
// weixin-push 通知
async function noticeWinxinPush (comment) {
if (config.BLOGGER_EMAIL === comment.mail) return
const wxContent = config.SITE_NAME + ` 有新评论啦!🎉🎉` + '\n\n' + '@' + comment.nick + '说:' + $(comment.comment).text() + '\n' + 'E-mail: ' + comment.mail + '\n' + 'IP: ' + comment.ip + '\n' + '点此查看完整内容:' + appendHashToUrl(comment.href || SITE_URL + comment.url, comment.id)
const ppApiContent = encodeURIComponent(wxContent);
const ppApiUrl = 'https://blogpkly-13278c-1258453354.ap-shanghai.app.tcloudbase.com/weixin-push?id=ww*******&secert=Ne******&agentId=1000003&msg=' //此处填写上文构造的访问URL
const sendResult = await axios.get(ppApiUrl+ppApiContent)
console.log('WinxinPush 通知结果:', sendResult)
}
|
补充一个配置项 WXPUSH_KEY
接着在云函数/数据库/config
中,点击“查看所有”,点击编辑,增加一个字段:
1
|
"WXPUSH_KEY":"abc123" //值的类型为string,值随便一个字符串(因为前端没有这个key配置入口,就添加到这里)
|

⊙ 新增一个WXPUSH_KEY
大功告成!现在,使用一个非博主的邮箱,去评论一条,看看是不是下面这样:

⊙ 自定义消息提醒API效果
关联阅读:
- Hugo 设置不同页面共用一套 Twikoo 评论
- 自定义Twikoo邮件通知模板
- 微信菌:利用企业微信搭建微信消息提醒API