node打造微信個人號機器人

如今,一樣平常生涯已離不開微信,本文將會舉一反三演示怎樣運用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}\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來說某個群員踢出去。

微信個人號機器人體驗:

《node打造微信個人號機器人》

指令:

自動經由過程摯友要求:加摯友時留言:【JavaScript】或【js】

自動復興:發送【指令】

自動加群:發送 【加群】

更多拜見官方文檔:https://chatie.io/wechaty

四、總結

本文經由過程wechaty完成了三個小功用向人人引見了wechaty這個庫的基礎運用,另有更多功用等着去探究。人人能夠依據本身的須要定製出壯大的個人微信號機器人。

人人能夠關注我的民眾號,一同遊玩。有手藝乾貨也有扯淡亂談,關注復興[888]另有不測欣喜領取

《node打造微信個人號機器人》

左手代碼右手磚,舉一反三

    原文作者:流口水流
    原文地址: https://segmentfault.com/a/1190000014584597
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞