node打造微信我的號機器人

如今,平常生活已經離不開微信,本文將會拋磚引玉演示如何使用wechaty操做微信我的號作一些有意思的東西,能夠實現自動經過好友請求、關鍵詞回覆、自動拉羣等功能。大大提升了社羣運營的效率。javascript

wechaty(https://github.com/Chatie/wec...)是一款開源的微信我的號SDK,進行了一系列的封裝,提供簡單好用的接口,而後開發者能夠在其之上進行微信機器人的開發。你能夠用它來作不少事:java

1)管理和維護好友;
2)快速有序地處理聊天信息
3)微信羣管理
4)實現自動回覆
5)……node

1、快速上手

wechaty 項目主頁寫着 6行代碼建立一個微信機器人,那麼咱們就來試一試。注意:Node.js version >= 8.5git

The World's Shortest ChatBot Code: 6 lines of JavaScriptgithub

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行代碼實現了登陸微信我的號並打印出所收到的消息。npm

wechaty 能夠經過Docker和NPM兩種方式運行,本文使用npm方式瀏覽器

node bot.js 啓動這個我的號機器人,這時命令行會打印出一個連接,咱們將它在瀏覽器中打開能夠看到這是個二維碼,掃碼便可登陸(注:2017年年末隨着微信逐步關停微信網頁版登陸支持,以後後註冊的微信號不支持網頁微信的登陸。老夫花了105RMB買了個號來用,心疼個人錢包3秒鐘)服務器

User Contact<劉星> logined // 掃碼登陸
Message: Message<JavaScript之禪> // 接收微信消息

機器人體驗在文末。
示例代碼地址:Github微信

2、自動經過好友請求

經過前面的示例代碼,能夠發現這個庫的簡潔強大了吧。接着咱們來實現第一個小功能:自動經過好友請求less

//···
.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命令行將直接打印出二維碼,方便了不少。

3、自動回覆

如今來實現第二個小功能:關鍵詞自動回覆。

//···
.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 】將會收到設置好的消息,實現自動回覆。

3、自動拉羣

前面說到了消息關鍵詞自動回覆,把消息處理和羣管理結合起來,咱們就能夠實現根據關鍵字自動拉羣了

//···
.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

4、總結

本文經過wechaty實現了三個小功能向你們介紹了wechaty這個庫的基本使用,還有更多功能等着去探索。你們能夠根據本身的須要定製出強大的我的微信號機器人。

你們能夠關注個人公衆號,一塊兒玩耍。有技術乾貨也有扯淡亂談,關注回覆[888]還有意外驚喜領取

左手代碼右手磚,拋磚引玉

相關文章
相關標籤/搜索