js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日
文章目录
- 微信测试号推送消息
- 一、申请微信测试号
- 二、下载nodeJs
- 1.下载安装包
- 2.检查是否安装成功
- 三、设置测试号发送信息的模板
- 四、编写发送消息代码(必须装好nodeJs)
- 1、编写代码 通用模板-复制可用(白嫖党看这里)
- 2、代码(成品)
- 五、开始运行
- 1、无依赖运行(会报错)
- 2、装好依赖继续运行
- 六、运行效果
- 总结
- 1、部署到青龙面板
- 2、执行定时任务
- 3、青龙面板发送消息成功
微信测试号推送消息
提示:这里可以添加本文要记录的大概内容:
前段时间在小红书、抖音都有刷到这个微信推送,看了一下网上的版本,基本上都是Python写的,但是我不会Python,学来不及了。
趁着自己会js,看了些php和python以及java的案例,无非就是请求传参,没啥区别。琢磨一下然后自己整出来
提示:以下是本篇文章正文内容,下面案例可供参考
一、申请微信测试号
测试号名字不能更改,
快捷入口:微信测试号官网,直接用微信扫码注册登录
注册进去之后,你会获取你的appID,以及secret密钥
记住这两个待会要用
二、下载nodeJs
如果有开发经验的就跳过这一步,直接进第三个
下载nodeJs主要是运行要用到它,待会是直接运行js文件的,基于nodeJs
1.下载安装包
nodeJs官网
下载左边的稳定版,安装过程无脑下一步就对了。
2.检查是否安装成功
按住win+R
调出cmd,在cmd中输入 node -v
显示版本号说明安装成功了
三、设置测试号发送信息的模板
参考我的
土味情话、舔狗日记、网易云都是调用的接口,生日倒计时和恋爱纪念日是我用js方法计算得出来的。
如果有js基础的话看起来一定很简单,如果是it小白的话也不要慌,直接拿去用就好了
今天是:{{date.DATA}}
土味情话:{{QingHua.DATA}}
距离生日还有:{{Birthday.DATA}} 天
今天是我们在一起第:{{jiNianDay.DATA}} 天
舔狗日记:{{tiangou.DATA}}
【网易云时间】:{{wangyiyun.DATA}}
在测试号界面点击添加测试模板,然后复制那个粘贴进去,保存。
四、编写发送消息代码(必须装好nodeJs)
基于nodeJs的脚本指令,所以必须装好node
除了nodeJs要安装之外,你还需要一个代码编辑器,这里推荐VSCode或者HBuilder X
作为在csdn游荡的程序员,这两个东西多多少少有吧。
当然,IDEA也行,只是编写代码而已,运行脚本还是可以走cmd的。
1、编写代码 通用模板-复制可用(白嫖党看这里)
打开VSCode,创建一个文件夹用来编写代码。
在这个文件夹里面创建一个js文件,名字叫sendMsg.js
代码模板
// 微信测试号发送消息
const axios = require('axios');
// 设置跨域请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// 定义post请求方法
const axiosPost = function (url, params) {return new Promise((resolve, reject) => {axios.post(url, params).then(res => {resolve(res);}).catch(err => {reject(err);});});
};
// 定义get请求方法
const axiosGet = function (url, params) {return new Promise((resolve, reject) => {axios.get(url, {params,}).then(res => {resolve(res);}).catch(err => {reject(err);});});
};
// 定义获取token方法
async function getToken() {const params = {grant_type: 'client_credential',appid: '', // 你的appid 1secret: '', // 你的secret 2};let res = await axiosGet('https://api.weixin.qq.com/cgi-bin/token', params);return res.data.access_token;
}async function templateMessageSend() {const token = await getToken();// 获取token// 如果需要加其他的api,仿写这个获取token的就行const url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' + token;const params = {touser: '', // 用户openid 3 就是扫码关注的那个微信号template_id: '', // 模板id 4 就是那个测试模板的ID// url: 'http://www.baidu.com', // 如果给了链接那么点击消息将会跳转进来,建议不加,不加点了无反应topcolor: '#FF0000',// 标题颜色data: {text1: {"value": "内容1","color": "#FCA60B" // 颜色},text2: {"value": "内容2","color": "#FCA60B" // 颜色},// 以此类推},};let res = await axiosPost(url, params);console.log('res: ', res.data);
}
// 执行发送订阅消息
templateMessageSend();
这个是没有添加任何api接口的简洁模板,其他的都是基于这个添加的。
如果你想自己编写,就复制这个拿去用,
发送内容的text1,text2就是之前模板里面这 双大括号里面的字段,DATA前面的那一段。看不懂的看下一节
2、代码(成品)
// 需要填写的地方已经标出
// 一共4个地方 appID、appsecret、模板ID、微信用户的openid
const axios = require('axios');
const moment = require('moment');
// 设置跨域请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// 定义post请求方法
const axiosPost = function (url, params) {return new Promise((resolve, reject) => {axios.post(url, params).then(res => {resolve(res);}).catch(err => {reject(err);});});
};// 定义get请求方法
const axiosGet = function (url, params) {return new Promise((resolve, reject) => {axios.get(url, {params,}).then(res => {resolve(res);}).catch(err => {reject(err);});});
};// 定义获取token方法
async function getToken() {const params = {grant_type: 'client_credential',appid: '', // 你的appid 1secret: '', // 你的secret 2};let res = await axiosGet('https://api.weixin.qq.com/cgi-bin/token', params);return res.data.access_token;
}// 1、随机一句土味情话
async function getQingHua() {let res = await axiosGet('https://api.uomg.com/api/rand.qinghua?format=json')return res.data.content;
}// 2、舔狗日记
async function getTianGou() {let res = await axiosGet('http://api.weijieyue.cn/api/tgrj/api.php')return res.data;
}// 3、网易云热评
async function getWangYiYun() {let res = await axiosGet('https://keai.icu/apiwyy/api')return res.data;
}// 天气 暂时不可用
// async function getWeather() {// let res = await axiosGet('https://api.vvhan.com/api/weather?city=长沙');
// console.log(res,'4')
// return res.data.info;
// }// 4、计算还有多少天过生日(公历)
function getDaysToBirthday(month, day) {let now = new Date();let thisYear = now.getFullYear();//今年的生日let birthday = new Date(thisYear, month - 1, day);if (birthday < now) {birthday.setFullYear(now.getFullYear() + 1);}let timeDec = birthday - now;let days = timeDec / (24 * 60 * 60 * 1000);return Math.ceil(days);
}
// 5、纪念日
function getJiNianDays(time) {let startTime = new Date(time).getTime() // 开始时间let nowTime = new Date().getTime() // 今天let duration = - moment(startTime).diff(nowTime) / (1000 * 3600 * 24) // 时间戳转化为天数return Math.ceil(duration) // 取整数
}
// 6、当前时间
function getDays() {let date = new Date()// 获取时间:时分秒const hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours()const minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()const secound = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()// this.datetime = hour + ':' + minute + ':' + secound// 获取日期:年月日const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()// this.nowDate = month + "月" + day + "日"// this.nowYear = year + "年"// 获取星期几const weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");// weeks[new Date().getDay()]; return (year + "年" + month + "月" + day + "日 " + hour + ':' + minute + ':' + secound + " " + weeks[new Date().getDay()])
}
// end定义发送消息模板
async function templateMessageSend() {// 加await是因为是异步请求,async await是配套使用的// es6语法,不会的没关系,function有async的时候使用时带上await就行const token = await getToken();const QingHua = await getQingHua();const tiangou = await getTianGou();const wangyyun = await getWangYiYun();const birthday = getDaysToBirthday(6, 8) // 填入生日(公历)const nowTime = getDays()const jiNianDay = getJiNianDays('2018-11-25') // 按照格式填入 年-月-日// console.log('------------------------------------------')// console.log('打印消息: ',QingHua, '--', tiangou, '--', wangyyun, '--', birthday, '---', jiNianDay)// console.log('------------------------------------------')const url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' + token;const params = {touser: '', // 用户openid 3template_id: '', // 模板id 4// url: 'http://www.baidu.com',topcolor: '#FF0000',data: {date: {"value": nowTime,"color": "#FCA60B"},QingHua: {"value": QingHua,"color": "#ff1a75"},Birthday: {"value": birthday,"color": "#1E90FF"},jiNianDay: {"value": jiNianDay,"color": "#3399cc"},qinghua: {"value": QingHua,"color": "#33FF33"},tiangou: {"value": tiangou,"color": "#007f80"},wangyiyun: {"value": wangyyun.content + '-- by ' + wangyyun.user,"color": "#2B9D4A"},},};let res = await axiosPost(url, params);console.log('res: ', res.data);
}
// 执行发送订阅消息
templateMessageSend();
这个是跟我一开始编写的模板对应的,可以直接拿来使用。
api接口以及生日倒计时,纪念日计算,等等都是可以二次开发,期待网友开发出更好的成品,
测试号发的消息会有文字限制,超出显示…
五、开始运行
nodeJs的运行语句是node ***.js
我们还没装依赖,运行肯定会报错。因为没有node_modules这个文件
我先运行一遍哈
1、无依赖运行(会报错)
这里我们安装依赖
npm install 依赖名
例如:npm install axios
2、装好依赖继续运行
继续运行node ***.js文件
如果还出现缺少依赖,我们一样的重复上一节,npm install 依赖名,这个就是依赖的安装语句
继续安装moment,这是一个时间计算的js插件,缺什么装什么
六、运行效果
运行还报错的,出问题的。
看一下,你们的参数填了没有,总共四个
- 你的appid
- 你的secret
- 用户openid
- 模板id
生日和纪念日在这里改,我这里已经填了我自己的
确保参数都没问题就是运行成功,会弹出消息通知
可以看到有消息通知来了、点进来看看吧
因为舔狗日记太长了,导致网易云没显示完整,这是一个弊端,微信做了限制吧,所以就这样了。
字数限制,没办法,后期不要舔狗日记也行,就推送纪念日,生日,天气啥的,天气我没找到稳定的接口,又不想出钱买,所以一直搁置着,干脆就没写了。
重新发了一条,就显示完整了。
总结
说难吧,也不难,我之前是在小红薯上看到作者【猪咪不是猪】写的,但是他写的是Python,想看源码,看不太明白,而且翻遍了全网没看到谁用js写,甚至关键字带上js都找不到这类型的文章,干脆自己搞一个js版,后面翻微信测试号的开发文档,自己在看了若干的axios请求的文章。做了个成品。
这个是基于nodeJs,在本地运行,我看到很多人都是github上的action自动运行,那个懒得搞。
我刚好有服务器,干脆丢服务器上做定时任务了,这不舒舒服服
1、部署到青龙面板
在脚本管理这里,点击加号,新增一个脚本文件,名字叫 sendWX.js,一定要带上js后缀。
然后把我的【成品】代码粘贴进去,注意不是模板
。是成品
点击保存之后,来任务界面,新建一个定时任务
命令:task sendWX.js
时间:0 8 * * * 表示每天早上八点整运行
2、执行定时任务
因为是面板,所以也需要安装依赖
报错了,是因为没有依赖,青龙面板装依赖不难,很简单的。
不会的看我教程,最新的
青龙面板安装依赖教程
3、青龙面板发送消息成功
可以看到已经发送成功了
为啥这个舔狗日记会变成这样,这个我也不太清楚,可能是在青龙面板上执行的时候出问题了。又可能是访问次数太多了。刚刚一直调试就这样了。实在不行可以就把舔狗日记删了。土味情话也没出问题
【舔狗日记】字数多还不讨好。不如搞个保安日记哈哈。
教程非常保姆级,不会的就在评论区问吧
js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日相关推荐
- 【最新敲简单】浪漫微信早安推送 +页面总控,JAVA版本,一键部署运行——保姆级教程
[最新敲简单]微信早安推送 +页面总控, JAVA版本,一键部署运行--保姆级教程 文章目录 [最新敲简单]微信早安推送 +页面总控, JAVA版本,一键部署运行--保姆级教程 一.项目简介 二.本地 ...
- 量化交易-利用同花顺量化平台supermind 5行代码搞定多条件选股并微信实时收消息-保姆级教程
利用supermind 5行代码搞定多条件选股并在微信实时收消息-保姆级教程 前言 对大部分炒股的朋友来说,日常最耗时的就是盯着选股条件然后不停的选股,我经常苦恼于有无程序能自动化实现选股,然后选中之 ...
- 教程: nodejs 做微信公众号开发,回复 xml 消息
教程: nodejs 做微信公众号开发,回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 .此篇介绍的是如何获取用户发来的信息,并回复它. 一.接收 ...
- 青龙面板之微信阅读 每日被动羊毛
青龙面板之微信阅读 每日被动羊毛 搭建好青龙面板环境不会搭建的朋友可以自己百度搜索 也可以找我帮忙搭建 收益:自动体现 第一步:微信打开: https://zl1208224758-131480484 ...
- 推自己的镜像到网易云
推送本地镜像 本文介绍如何将本地镜像推送至你的网易云私有镜像仓库,以便在网易云上部署容器或集群. 注:Docker 客户端版本要求 1.7 及以上. 1. 列出本地镜像 docker images 2 ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- 前端涨薪必读,node.js入门保姆级教程
Node.js保姆级教程 1. Node基本概念 2. 第一个node.js程序 3. node创建get请求 4. node创建post请求 1. Node基本概念 1.1 node.js是什么? ...
- 舔狗日记更新美化版源码
我们是狗,舔狗.基于上一版中的数据,重新设计了舔狗日记. 人肉对每段数据的内容.标点符号进行纠错与优化(不一定标准):并按本人理解进行了划重点标记. 接入和风天气API,获取城市.气象.气温.免费版每 ...
- js对象、数组、字符串操作总结(保姆级教程)
对象操作 1. 扩展运算符 作用是遍历某个对象或者数组 testMethod() {// 三个点 ... 俗称扩展运算符或延展运算符,需要注意的是扩展运算符在拷贝的时候只能深拷贝第一层,第二层及以下都 ...
最新文章
- 你有过这样的“反应”吗?
- Windows XP添加网络打印机的方法
- web service notes
- 随机数范围扩展方法总结
- 浪潮服务器测试文档,ESXI6.7注入浪潮服务器raid驱动测试
- javacript中的mvc设计模式
- 【tool】关于oracle数据库的安装与使用
- 如何在Java中创建内存泄漏?
- JAXB 遇到的问题
- .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总
- Diango 框架起步
- 零基础学FPGA(二):FPGA生产厂家及产品(呕心沥血,小白如何选择板卡)
- 应用ImageJ对荧光图片进行半定量分析
- 数领科技|solidworks教程:如何打包solidworks工程文件
- ipa图片解密 php,ipa文件详解 - 如何提取App图片
- 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈
- 个人项目(一)-- 音乐播放器
- Linux学习(六):proftpd搭建,完美解决vsftpd中文引号bug
- php支付宝聚合支付源码,ThinkPHP5.1聚合支付源码
- 浙江理工大学 我的编程之路 零基础学C/C++ 200题 标程/题解