现在,日常生活已经离不开微信,本文将会抛砖引玉演示如何使用 wechaty 操作微信个人号做一些有意思的东西,可以实现自动通过好友请求、关键词回复、自动拉群等功能。大大提高了社群运营的效率。
wechaty( https://chatie.io/wechaty/)是一款开源的微信个人号SDK,进行了一系列的封装,提供简单好用的接口,然后开发者可以在其之上进行微信机器人的开发。你可以用它来做很多事:
1)管理和维护好友; 2)快速有序地处理聊天信息 3)微信群管理 4)实现自动回复 5)……
一、快速上手
wechaty 项目主页写着 6行代码创建一个微信机器人,那么我们就来试一试。 注意:Node.js version >= 8.5
The World's Shortest ChatBot Code: 6 lines of JavaScript
const { Wechaty } = require('wechaty') Wechaty.instance() // Singleton .on('scan', (url, code) => console.log(`Scan QR Code to login: $[code]\n${url}`)) .on('login', user => console.log(`User ${user} logined`)) .on('message', message => console.log(`Message: ${message}`)) .start()
这6行代码实现了登录微信个人号并打印出所收到的消息。
wechaty 可以通过Docker和NPM两种方式运行,本文使用npm方式
node bot.js 启动这个个人号机器人,这时命令行会打印出一个链接,我们将它在浏览器中打开可以看到这是个二维码,扫码即可登录(注:2017年年底随着微信逐步关停微信网页版登录支持,之后后注册的微信号不支持网页微信的登录。老夫花了105RMB买了个号来用,心疼我的钱包3秒钟)
User Contact<刘星> logined // 扫码登录 Message: Message<JavaScript之禅> // 接收微信消息
机器人体验在文末。 示例代码地址: Github
二、自动通过好友请求
通过前面的示例代码,可以发现这个库的简洁强大了吧。接着我们来实现第一个小功能:自动通过好友请求
//··· .on('friend', async (contact, request) => { if (request) { if (/JavaScript|JS/i.test(request.hello)) { logMsg = 'accepted because verify messsage is "JS之禅"' request.accept() } else { logMsg = 'not auto accepted, because verify message is: ' + request.hello } } else { logMsg = 'friend ship confirmed with ' + contact.get('name') } }) //···
这里我们通过监听 friend 事件。可以获取到谁发了什么好友请求。这里我们验证了添加好友时的请求,在收到好友请求内容为【 JS 】或者【JavaScript】时 就会自动通过好友请求了。
每次都复制链接到浏览器打开二维码在扫码一点儿都不方酷也不方便在服务器上使用。这时我们可以用 qrcode-terminal 这个包 直接在命令行中打印出二维码。
//··· const QrcodeTerminal = require('qrcode-terminal') //··· .on('scan', (url, code) => { let loginUrl = url.replace('qrcode', 'l') QrcodeTerminal.generate(loginUrl) console.log(url) }) //···
再运行 node bot.js 命令行将直接打印出二维码,方便了很多。
三、自动回复
现在来实现第二个小功能:关键词自动回复。
//··· .on('message', async (message) => { const contact = message.from() const content = message.content() const room = message.room() if (room) { console.log(`Room: ${room.topic()} Contact: ${contact.name()} Content: ${content}`) } else { console.log(`Contact: ${contact.name()} Content: ${content}`) } // 不处理自己发的消息 if (message.self()) { return } if (/JavaScript|Js|js/.test(content)) { message.say('关注公众号 JavaScript之禅') } }) //···
在上面 我们监听 message 来做消息处理。message 可以接收到所有的消息,我们可以判断是不是群聊消息、根据消息回复相应内容。如发送【 js 】将会收到设置好的消息,实现自动回复。
四、自动拉群
前面说到了消息关键词自动回复,把消息处理和群管理结合起来,我们就可以实现根据关键字自动拉群了
//··· .on('message', async (message) => { const contact = message.from() const content = message.content() const room = message.room() if (room) { console.log(`Room: ${room.topic()} Contact: ${contact.name()} Content: ${content}`) } else { console.log(`Contact: ${contact.name()} Content: ${content}`) } if (message.self()) { return } if (/JavaScript|Js|js/.test(content)) { message.say('关注公众号 JavaScript之禅没?') } // 自动拉群 if (/加群/.test(content)) { let keyroom = await Room.find({ topic: 'test' }) if (keyroom) { await keyroom.add(contact) await keyroom.say('欢迎新朋友!', contact) } } }) //···
上面的代码通过 Room 来操作群聊。 此时回复 【加群】即可被自动拉入群中。当然了,我们还可以做得更多如使用 Room.del 来讲某个群员踢出去。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]