微信助手是很常见的运营工具,不仅能够给微信群带来活跃度,还能针对各种社群开发不同的玩法。 本目标是做一个文件传输助手,当群内有人@机器人并say关键词时,机器人从已有文件业务系统中找到文件并发出;同时在群中直接发送一个文件,机器人可将文件自动上传至文件业务系统。
以下是我的开发过程
1、微信官方并没有相关的 API。可能要考虑考虑企业微信?结果发现企业微信有群机器人,但完全无法满足我的需求,企业微信就排除了。
2、找了很多基于 Web 版微信的各种开源方案,但是对文件的支持基本为0。同时还存在很多账号登不了 Web 版微信的情况,找了官方文档,无法解决,放弃。
3、偶然间在github上看到了wechaty框架 对这个简单上手,实用性高的框架爱不释手,于是决定立即开展。但是有发现,iPad 协议,虽然需要付费获取 token,但是可以申请参与开源激励计划来获取免费甚至长期有效的 token。
使用wechaty收发消息
在 Wechaty 中,不同的 Puppet
对应不同的协议。Wechaty 还有不同语言的 SDK,以及 demo template repository,对开发者非常友好,开发者参与度也很高。 github上已经开源了非常多成功的案例,具体细节就不在详述,只介绍关键部分,如下。
首先需要初始化一个 bot: 1、install Wechaty 老实说,install Wechaty我还是花了一些时间的,老是npm错误。后面发现是vs_BuildTools安装不上,原来是已经有了底版本的。需要先卸载。好在后面处理好了,不然就卡住了。
2、初始化bot,绑定事件函数,这里只需要onScan和onMessage两个事件就行
// create a Wechaty instance as bot
const puppet = new PuppetPadplus({
token: ipadToken
})
let bot = new Wechaty({
puppet, name: 'getFile'});
bot.on('scan', onScan);
bot.on('message', onMessage);
bot
.start()
.then(() => {
console.log('开始登陆微信');
})
.catch(async function(e) {
console.log('初始化失败: ${e}.')
await bot.stop()
process.exit(1)
});
3、onScan事件 由于申请的是 iPad 协议的 token,这里用到的是 PuppetPadplus
。 接着对 bot 绑定各种事件的处理函数,其中 message
事件是接收到消息时触发的事件。
async function onScan(qrcode, status) {
Qrterminal.generate(qrcode)
console.log('扫描状态'<