hexo博客给Valine添加评论自动微信推送

引言:Valine评论系统本身并不自带新增评论提醒功能,好在光顾网友站点的时候发现了两个非常宽松推送API:Server酱Qmsg酱。分别对应微信QQ,自己琢磨着写了几行JS代码,能利用以上两个API专门针对Valine评论进行推送提醒,下面就让我们进入正题吧。

先上几张效果图:

Server酱

Qmsg酱


下面来说如何实现,实现方案是基于hexo或者静态页面的。

  • Sever酱

1.打开Sever酱网站链接,点击GitHub一键登入

Server酱-1


2.到微信推送页面,按照提示绑定微信(需要关注Server酱公众号)

Server酱-2

3.获取SCKEY并保存记录下载,等会要用到

4.将以下JS代码粘贴到博客网站引用的JS文件中,这里我用的是matery主题,我把它粘贴到source/js/matery.js文件底部,另起一行直接粘贴即可

var title1="text=KZblog又有新评论啦~!--by Valine"
var SCKEY_Server=""
var ValineButton=document.getElementsByClassName("vsubmit vbtn")[0];
function send_valine_Server(){
    var text="desp=";
    var pagename=document.title;
    var wz=pagename.indexOf('|');
    var res=pagename.substring(0,wz);
    var pageurl=document.URL;
    var ptime=new Date();
    var vnick=document.getElementsByClassName("vnick vinput")[0].value;
    var vmail=document.getElementsByClassName("vmail vinput")[0].value;
    var vlink=document.getElementsByClassName("vlink vinput")[0].value;
    var veditor=document.getElementsByClassName("veditor vinput")[0].value;
    var data=text+"|昵称:"+"|邮箱:"+"|网站地址:"+"|当前页面:"+"|评论内容:"+"|跳转链接:"+"|评论时间"+"\n"+"|----|----|----|----|"+"\n"+"|   "+vnick+"   |   "+vmail+"  |  "+vlink+"|   "+res+"| "+veditor+"| "+pageurl+"|" +ptime.toLocaleString()+"|";
    var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象
    httpRequest.open('POST', 'https://sc.ftqq.com/'+SCKEY_Server+'.send', true); //第二步:打开连接
    httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)
    httpRequest.send(title1+"&"+data);//发送请求 将情头体写在send中
};
ValineButton.onclick=send_valine_Server;

如果你想适配你的站点,只需要修改SCKEY_Server的值和title1的值即可,将之前获取到的SCKEY的值填入双引号之中,比如SCKEY_Server="SCUXXXXXXXXXXXXXXXXXXXX706c",将title1里text=而不是第4行的var text后面的内容修改成你想要的内容即可(注意:不要将最后的引号删掉了)

需要修改的地方


title1对应下图中红色方框的部分标题,内容我写好了模板,会显示昵称、邮箱、网站地址、当前页面、评论内容、跳转链接、评论时间,以表格的形式显示出来。

title1对应标题


  • Qmsg酱

1.进入Qmsg酱网站,一键QQ登录

2.选择Qmsg酱小姐姐,并添加QQ号

选择Qmsg小姐姐并添加QQ号


3.将接口地址保存记录下来,等会要用

保存接口地址


4.将以下代码像Server酱的代码一样粘贴到随便一个引用的JS文件中,比如粘贴到matery.js底部另起一行直接粘贴

var title2="msg=KZblog又有新评论啦~!--by Valine\n"
var SCKEY_Qmsg=""
var ValineButton=document.getElementsByClassName("vsubmit vbtn")[0];
function send_valine_Qmsg(){
    var pagename=document.title;
    var wz=pagename.indexOf('|');
    var res=pagename.substring(0,wz);
    var pageurl=document.URL;
    var ptime=new Date();
    var vnick=document.getElementsByClassName("vnick vinput")[0].value;
    var vmail=document.getElementsByClassName("vmail vinput")[0].value;
    var vlink=document.getElementsByClassName("vlink vinput")[0].value;
    var veditor=document.getElementsByClassName("veditor vinput")[0].value;
    var data="昵称:"+vnick+"\n邮箱:"+vmail+"\n网站地址:"+vlink+"\n当前页面:"+pagename+"\n评论内容:"+veditor+"\n跳转链接:"+pageurl+"\n评论时间"+ptime.toLocaleString();
    var httpRequest = new XMLHttpRequest();//第一步:创建需要的对象
    httpRequest.open('POST',SCKEY_Qmsg, true); //第二步:打开连接
    httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头)
    httpRequest.send(title2+data);//发送请求 将情头体写在send中
};
ValineButton.onclick=send_valine_Qmsg;

修改SCKEY_Qmsg值,将先前保存的接口地址填入即可,比如SCKEY_Qmsg="https://qmsg.zendee.cn:443/send/85XXXXXXXXXXXX2433.html",title2中msg=后面的内容可以随意修改,保留后面的\n用来换行,不然排版不好看。然后重新生成静态页面就能成功接收推送了


推送结果


PS:本人才疏学浅,写的代码在内行人看来难免会觉得冗余、低效、不美观,有能力的自行修改便可,如有错误欢迎指正,也欢迎大家在评论区讨论。

另外,就我目前测试而言Server酱和Qmsg酱无法同时使用,如果这两段代码都加上去只有Qmsg生效。所以Server酱和Qmsg二选其一吧,看自己方便用哪个?

欢迎在下方积极留言、参与讨论,站长会在查看之后第一时间回复。