怎样使用node打造微信个人号机器人

这次给大家带来怎样使用node打造微信个人号机器人,使用node打造微信个人号机器人的注意事项有哪些,下面就是实战案例,一起来看一下。

现在,日常生活已经离不开微信,本文将会抛砖引玉演示如何使用 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]${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 // 接收微信消息

登录后复制

机器人体验在文末。 示例代码地址: 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)}}})//···

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

如何使用vue中filter

怎样使用vue判断dom的class

以上就是怎样使用node打造微信个人号机器人的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2751236.html

(0)
上一篇 2025年3月8日 05:48:38
下一篇 2025年3月7日 07:28:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎样操作node实现登录图片验证码

    这次给大家带来怎样操作node实现登录图片验证码,操作node实现登录图片验证码的注意事项有哪些,下面就是实战案例,一起来看一下。 1.安装 cnpm i svg-captcha –save 登录后复制 2.在使用的地方导入 var sv…

    2025年3月8日 编程技术
    200
  • 如何使用node中cluster集群

    这次给大家带来如何使用node中cluster集群,使用node中cluster集群的注意事项有哪些,下面就是实战案例,一起来看一下。 结论 虽然平常通过设置为CPU进程数的工作进程,但是可以超过这个数,并且并不是主进程先创建 if (cl…

    2025年3月8日
    200
  • 使用node应用中timing-attack存在哪些安全漏洞

    本篇文章给大家通过原理的原因分析了node应用的timing-attack安全漏洞问题,有兴趣的朋友阅读参考下。 前言 假如你在项目中遇到过 eslint 报错 Potential timing attack ,不可忽视!这是一个涉及到安全…

    编程技术 2025年3月8日
    200
  • 怎样利用node做出可读流动模式

    这次给大家带来怎样利用node做出可读流动模式,利用node做出可读流动模式的注意事项有哪些,下面就是实战案例,一起来看一下。 node的可读流基于事件 可读流之流动模式,这种流动模式会有一个”开关”,每次当&#82…

    2025年3月8日
    200
  • 使用node.js如何创建子进程(详细教程)

    之前看多进程这一章节时发现这块东西挺多,写process模块的时候也有提到,今天下午午休醒来静下心来好好的看了一遍,发现也不是太难理解。所以下面这篇文章主要给大家介绍了关于利用node.js如何创建子进程的相关资料,需要的朋友可以参考下。 …

    编程技术 2025年3月8日
    200
  • 如何在NodeJS项目中使用ES6

    本篇文章主要介绍了详解如何在nodejs项目中优雅的使用es6,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性。只…

    编程技术 2025年3月8日
    200
  • 关于nodejs+mongodb+vue前后台配置ueditor的代码

    本篇文章主要介绍了nodejs+mongodb+vue前后台配置ueditor的示例代码,内容挺不错的,现在分享给大家,也给大家做个参考。 笔者在做一个个人博客项目的时候需要一个富文本框输入组件与后台进行交互,但是官方配置里面没有关于nod…

    2025年3月8日
    200
  • NodeJs form-data格式传输文件的方法

    这篇文章主要介绍了nodejs form-data格式传输文件的方法,内容挺不错的,现在分享给大家,也给大家做个参考。 本文介绍了Node Js 使用KOA处理form-data格式传输过来的文件,分享给大家。具体如下: 使用koa有一段时…

    编程技术 2025年3月8日
    200
  • 关于node.js中fs.stat与fs.fstat的区别

    fs.stat和fs.fstat他们都是用来获取文件的状态信息,下面这篇文章主要给大家介绍了关于node.js中fs.stat与fs.fstat区别的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。…

    编程技术 2025年3月8日
    200
  • node-mysql中防止SQL注入的方法

    大家都知道sql注入对于网站或者服务器来讲都是一个非常危险的问题,如果这一方面没处理好的话网站可能随时给注入了,所以这篇文章就给大家总结了node-mysql中防止sql注入的几种常用做法,有需要的朋友们可以参考借鉴。 SQL注入简介 SQ…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论