首頁 > web前端 > js教程 > 主體

怎麼使用node做出個人號機器人

php中世界最好的语言
發布: 2018-06-06 09:43:08
原創
1916 人瀏覽過

這次帶給大家怎麼使用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]\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 來講某個群員踢出去。 ######相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! ######推薦閱讀:#########怎麼取得前端介面中的DOM元素絕對位置###############如何最佳化Angular程式碼### ######

以上是怎麼使用node做出個人號機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板