当前位置: 首页 > 后端技术 > Node.js

Node搭建微信个人号机器人

时间:2023-04-03 20:27:22 Node.js

现在,日常生活离不开微信。本文将演示如何使用wechaty操作微信个人号做一些有趣的事情,可以自动传递好友请求、关键词回复、自动拉群功能。大大提高了社区运营效率。wechaty(https://github.com/Chatie/wec...)是一个开源的微信个人账号SDK,拥有一系列的封装,提供简单易用的接口,开发者可以在此基础上进行构建微信机器人的开发。你可以用它来做很多事情:1)管理和维护好友;2)快速有序的处理聊天消息3)管理微信群4)实现自动回复5)...1.快速上手wechaty项目首页说6行代码创建微信机器人,大家试试看。注意:Node.jsversion>=8.5世界上最短的ChatBot代码:6行JavaScriptconst{Wechaty}=require('wechaty')Wechaty.instance()//Singleton.on('scan',(url,code)=>console.log(`ScanQRCodetologin:${code}\n${url}`)).on('login',user=>console.log(`User${user}loggedin`)).on('message',message=>console.log(`Message:${message}`)).start()这6行代码实现了微信个人号的登录,并打印出收到的消息。Wechaty可以通过两种方式运行:Docker和NPM。在本文中,我们使用npm方式nodebot.js来启动个人账号机器人。这时候命令行会打印出一个链接。我们可以在浏览器中打开看到是一个二维码,扫码登录(注:2017年底,随着微信逐渐关闭微信网页版的登录支持,微信之后注册的账号不支持网页版微信登录。老头花105RMB买个账号用,心疼钱包3秒)用户联系人<刘星>登录//扫码登录Message:Message//机器人微信消息接收体验见文末。示例代码地址:Github2.通过好友自动请求通过前面的示例代码,可以发现这个库简单而强大。然后我们来实现第一个小功能:自动传递好友请求//···.on('friend',async(contact,request)=>{if(request){if(/JavaScript|JS/i.test(request.hello)){logMsg='acceptedbecauseverifymessageis"JSZen"'request.accept()}else{logMsg='notautoaccepted,becauseverifymessageis:'+request.hello}}else{logMsg='friendshipconfirmedwith'+contact.get('name')}})//···这里监听好友事件。你可以得到谁发送了什么好友请求。这里我们在添加好友时验证请求,当好友请求内容为[JS]或[JavaScript]时,会自动通过好友请求。每次都复制链接到浏览器打开二维码,一点都不爽,在服务器上使用也不方便。这时候我们可以使用qrcode-terminal包直接在命令行打印出二维码。//···constQrcodeTerminal=require('qrcode-terminal')//···.on('scan',(url,code)=>{letloginUrl=url.replace('qrcode','l')QrcodeTerminal.generate(loginUrl)console.log(url)})//···运行nodebot.js命令行会直接打印出二维码,方便多了。3、自动回复下面我们来实现第二个小功能:关键词自动回复。//···.on('message',async(message)=>{constcontact=message.from()constcontent=message.content()constroom=message.room()if(room){console.log(`房间:${room.topic()}联系人:${contact.name()}内容:${content}`)}else{console.log(`联系人:${contact.name()}内容:${content}`)}//不处理自己发送的消息if(message.self()){return}if(/JavaScript|Js|js/.test(content)){message.say('follow公众号JavaScript之禅')}})//···上面我们监听message来做消息处理。message可以接收所有的消息,我们可以判断是否是群聊消息,并根据消息回复相应的内容。如果你发送[js],你将收到设置的消息并实现自动回复。3.自动拉群前面说了组合了消息关键词的自动回复。结合消息处理和分组管理,我们可以根据关键字自动拉分组//···.on('message',async(message)=>{constcontact=message.from()constcontent=message.content()constroom=message.room()if(room){console.log(`Room:${room.topic()}Contact:${contact.name()}Content:${content}`)}else{console.log(`联系人:${contact.name()}内容:${content}`)}if(message.self()){return}if(/JavaScript|Js|js/.test(content)){message.say('Focuson公众号JavaScriptZen?')}//自动拉群if(/addgroup/.test(content)){letkeyroom=awaitRoom.find({topic:'test'})if(keyroom){awaitkeyroom.add(contact)awaitkeyroom.say('欢迎新朋友!',contact)}}})//···以上代码通过Room操作群聊。此时回复【加群】,系统会自动拉你入群。当然,我们还可以做的更多,比如用Room.del把某个群成员踢出去。更多内容请参考官方文档:https://chatie.io/wechaty4.总结本文通过wechaty实现三个小功能,介绍wechaty库的基本使用,还有更多功能等待探索。您可以根据自己的需求定制一款功能强大的个人微信号机器人。大家可以关注我的公众号【JavaScript之禅】一起玩。有技术干货和废话,关注回复【888】还有惊喜领取左手码右手砖,抛砖引玉