溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node打造微信個人號機器人的示例分析

發(fā)布時間:2021-07-20 11:25:35 來源:億速云 閱讀:123 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細講解有關node打造微信個人號機器人的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

wechaty( https://chatie.io/wechaty/)是一款開源的微信個人號SDK,進行了一系列的封裝,提供簡單好用的接口,然后開發(fā)者可以在其之上進行微信機器人的開發(fā)。你可以用它來做很多事:

1)管理和維護好友; 2)快速有序地處理聊天信息 3)微信群管理 4)實現(xiàn)自動回復 5)……

一、快速上手

wechaty 項目主頁寫著 6行代碼創(chuàng)建一個微信機器人,那么我們就來試一試。 注意: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行代碼實現(xiàn)了登錄微信個人號并打印出所收到的消息。

wechaty 可以通過Docker和NPM兩種方式運行,本文使用npm方式

node bot.js 啟動這個個人號機器人,這時命令行會打印出一個鏈接,我們將它在瀏覽器中打開可以看到這是個二維碼,掃碼即可登錄(注:2017年年底隨著微信逐步關停微信網(wǎng)頁版登錄支持,之后后注冊的微信號不支持網(wǎng)頁微信的登錄。老夫花了105RMB買了個號來用,心疼我的錢包3秒鐘)

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

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

二、自動通過好友請求

通過前面的示例代碼,可以發(fā)現(xiàn)這個庫的簡潔強大了吧。接著我們來實現(xiàn)第一個小功能:自動通過好友請求

//···
.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')
}
})
//···

這里我們通過監(jiān)聽 friend 事件??梢垣@取到誰發(fā)了什么好友請求。這里我們驗證了添加好友時的請求,在收到好友請求內(nèi)容為【 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 命令行將直接打印出二維碼,方便了很多。

三、自動回復

現(xiàn)在來實現(xiàn)第二個小功能:關鍵詞自動回復。

//···
.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}`)
}

// 不處理自己發(fā)的消息
if (message.self()) {
return
}

if (/JavaScript|Js|js/.test(content)) {
message.say('關注公眾號 JavaScript之禪')
}
})
//···

在上面 我們監(jiān)聽 message 來做消息處理。message 可以接收到所有的消息,我們可以判斷是不是群聊消息、根據(jù)消息回復相應內(nèi)容。如發(fā)送【 js 】將會收到設置好的消息,實現(xiàn)自動回復。

四、自動拉群

前面說到了消息關鍵詞自動回復,把消息處理和群管理結合起來,我們就可以實現(xiàn)根據(jù)關鍵字自動拉群了

//···
.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打造微信個人號機器人的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI