资讯专栏INFORMATION COLUMN

node打造微信个人号机器人

xiaolinbang / 2307人阅读

摘要:是一款开源的微信个人号,进行了一系列的封装,提供简单好用的接口,然后开发者可以在其之上进行微信机器人的开发。注意这行代码实现了登录微信个人号并打印出所收到的消息。大家可以根据自己的需要定制出强大的个人微信号机器人。

现在,日常生活已经离不开微信,本文将会抛砖引玉演示如何使用wechaty操作微信个人号做一些有意思的东西,可以实现自动通过好友请求、关键词回复、自动拉群等功能。大大提高了社群运营的效率。

wechaty(https://github.com/Chatie/wec...)是一款开源的微信个人号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)
      }
    }
})
//···

上面的代码通过Room 来操作群聊。 此时回复 【加群】即可被自动拉入群中。当然了,我们还可以做得更多如使用Room.del来讲某个群员踢出去。

微信个人号机器人体验:

指令:

自动通过好友请求:加好友时留言:【JavaScript】或【js】

自动回复:发送【指令】

自动加群:发送 【加群】

更多参见官方文档:https://chatie.io/wechaty

四、总结

本文通过wechaty实现了三个小功能向大家介绍了wechaty这个库的基本使用,还有更多功能等着去探索。大家可以根据自己的需要定制出强大的个人微信号机器人。

大家可以关注我的公众号,一起玩耍。有技术干货也有扯淡乱谈,关注回复[888]还有意外惊喜领取

左手代码右手砖,抛砖引玉

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94602.html

相关文章

  • 教你如何在低成本、有限的时间里策划裂变100社群_怎么做微信防封群

    摘要:如何在低成本有限的时间里策划一场合格的裂变活动呢常做裂变的朋友可能回到个词裂变系数投入与产出比。存在成本的裂变活动吗答案存在。在这条新规则宣布后,裂变分享率增加到了。优点进一步验证用户的朋友圈,防止浑水摸鱼。 ...

    BLUE 评论0 收藏0
  • 如何打造一个令人愉悦的前端开发环境(三)

    摘要:的最后一个大招就是替换一些传统的服务端语言,例如,,等,在业务层上面使用来开发服务端完全不成问题。更多的的使用细节和技巧建议关注美团博客大搜车论坛下一篇我们开启如何结合和搭建一个开发环境和项目目录 往期回顾 前面2期都讲得是浏览器端的东西比较多,包括Webpack,虽然是Node处理的,但是还是浏览器端用的多,对于现在的前端开发来说,不懂一点服务端的东西,简直没办法活,一般的招聘要求都...

    cgh1999520 评论0 收藏0
  • 2017年1月前端月报

    摘要:平日学习接触过的网站积累,以每月的形式发布。年以前看这个网址概况在线地址前端开发群月报提交原则技术文章新的为主。 平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 概况 在线地址:http://www.kancloud.cn/jsfront/month/82796 JS前端开发群月报 提交原则: 技...

    FuisonDesign 评论0 收藏0
  • 2017年1月前端月报

    摘要:平日学习接触过的网站积累,以每月的形式发布。年以前看这个网址概况在线地址前端开发群月报提交原则技术文章新的为主。 平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 概况 在线地址:http://www.kancloud.cn/jsfront/month/82796 JS前端开发群月报 提交原则: 技...

    Jochen 评论0 收藏0
  • 2017年1月前端月报

    摘要:平日学习接触过的网站积累,以每月的形式发布。年以前看这个网址概况在线地址前端开发群月报提交原则技术文章新的为主。 平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 概况 在线地址:http://www.kancloud.cn/jsfront/month/82796 JS前端开发群月报 提交原则: 技...

    ivyzhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<