(下部) wechaty 微信機器人源碼教程

 wechaty | 微信社羣管理 - 機器人

Hello,大家好。我是公衆號“八點半技術站”的小編-Bruce.D。

今天是週三(2020-04-27),分享一句諺語 “積累知識、勝過積蓄金銀” 分享給大家的是 「工具 模塊」- wechaty 微信機器人。

這裏也是機器人源碼完結版,我會具體拆分源碼模塊以及代碼行對應的註釋。如果你也想讓自己微信社羣有機器人輔助管理,那豈不美哉。那麼請務必仔細閱讀。

01

iPad 協議

上一部分我們講解了 web 協議,你們期待的 iPad 協議,它來了。

首先在這裏再次提醒大家,iPad 的協議是 需要 token(官方申請),如何申請這種問題,自己去看我的上篇文章,謝謝。

這裏呢,我會提供給大家一個官方一個基於iPad 協議的padplus項目地址。

地址:https://github.com/wechaty/wechaty-puppet-padplus

官方提供一系列步驟,一個基礎demo。新手可以先了解一下,然後開始使用我爲大家提供的源碼,這樣效果更佳。

目前實現功能:

        ① 自動通過好友驗證

    • 當有人添加機器人時,判斷驗證消息關鍵字後通過或直接通過

    • 通過驗證後自動回覆並介紹機器人功能

     ② 私聊關鍵字回覆

    • 例如回覆 加羣 推送羣聊邀請

    • 例如回覆 作者微信 推送作者微信名片

     ③ 自動聊天

    • 羣聊中通過 @[機器人]xxx 可以和機器人聊天

    • 私聊發送消息即可聊天

    ④ 加入羣聊自動歡迎

    • 當新的小夥伴加入羣聊後自動 @[新的小夥伴] 發一個文字歡迎

02


源碼 講解

在這裏,我會將源碼每一塊詳細拆分+註釋,希望能做到小白看了都有所感悟的那種效果。例如下面武庚終於開始牛逼+超神 那種效果。

                 

第一 :代碼結構

 

  第二 :初期準備事項

1. 新建文件夾,初始化

npm init -y

2. 繼續安裝比較重要的核心包

// Wechaty核心包
npm install --save wechaty
// padplus協議包
npm install --save wechaty-puppet-padplus

3. 安裝 qrcode-terminal 包,作用將二維碼輸出終端(我們可以掃碼登錄)

npm install --save qrcode-terminal

 第三 :配置文件

配置文件 config.js ,這裏主要配置 token、機器人名字、羣組id、加入羣裏回覆、好友加羣驗證。

第四 :入口文件

入口文件,也就是我們 src 目錄下的 index.js 文件

這裏做的很簡單,沒有邏輯

首先引入我們包

接着初始化我們的bot

接下來一段鏈式調用,監聽,啓動,完事

上面代碼都有註釋,scan, room-join, message, friendship 這些都是我們各個階段的事件監聽

  • scan 機器人需要掃描二維碼時監聽

  • room-join 加入房間監聽

  • message 消息監聽

  • friendship 好友添加監聽

這些事件監聽我只做簡單解釋,因爲沒啥說的,api文檔都有,請仔細閱讀我們的文檔!

這些個監聽後面的回調,我這裏只不過把他們單獨拿出去了,也就是上文目錄結構中的那幾個文件

這裏的onMessage是做了一個方法調用,其實還是返回一個回調函數,只不過我們在消息監聽中用到了bot實例,所以用這種方式傳值而已。

第五 :解釋各文件具體操作


onScan,onScan 文件是我們在機器人需要掃描二維碼時的監聽回調

這裏面的代碼超級簡單

首先引入 qrcode-terminal 包

這個回調中其實做的很簡單,回調接收了兩個參數

  • qrcode qr碼

  • status 狀態

我們藉助Qrterminal.generate這個API將 qr 碼輸出到終端而已,後面那個small參數是因爲qrcode-terminal 這個包默認輸出的二維碼太大了,給它變小一些。

onFriendShip

onFriendShip是friendship事件監聽的回調,好友添加監聽

如上所示,我們想加好友時,驗證消息填寫我們指定的文字可以自動通過

So,我們從配置文件中拿到這個參數,在新的好友請求過來時做一個判斷即可

onRoomJoin

onRoomJoin,也就是進入房間監聽回調

需求是在我們需要管理的羣聊中,只要有新人加入,我們就發一個歡迎詞並@他下

當然這些東西還是在config中配置好的,在這裏拿到就可以

此回調接收三個參數

  • room 羣聊實例

  • inviteeList 受邀者名單

  • inviter 邀請者

有了房間,受邀者,邀請者,那麼這裏也就非常easy了,做一下判斷就可以了,這裏的room.id就是我們配置的管理羣組列表對象的value值。

爲什麼要有管理羣組列表對象呢?因爲我們在登錄了一個微信號時,羣組進入監聽是針對微信號中所有羣組的,我的需求是要管理我的羣組,所以事先跑了下程序,輸出了room,然後羣裏發個消息,就拿到了我想管理的羣組所有信息,id自然也在裏面,然後寫到了配置裏。

接下來就是,監聽到新加入,把受邀者列表遍歷一下,使用room.say方法發送羣消息即可,受邀者列表裏存的就是加入的微信號實例,say 方法第一個參數就是要發送的消息,第二個參數就是爲了@此人一下。。。感覺我的敘述毫無營養,還是那句話,這裏只是說它是什麼意思,具體API閱讀文檔吧,文檔都有,也很簡單。

message

最後就是message回調了,這個是代碼最多的一個地方了,消息監聽回調嘛

這也是代碼中稍微有些邏輯的地方,因爲要有各種判斷。

先不說程序邏輯,機器人總得能聊天不是,所以網上找了個免費的機器人聊天接口對接了一下。

該接口詳細請看

  • https://drea.cc/mm.php

其實就是一個API,我們做一下封裝,調用傳入消息,返回消息,僅此而已

因爲有請求,所以這塊用了一個請求包,一個參數解碼包,所以還要安裝並引入下

npm install --save request
npm install --save urlencode

把接口封裝下,因爲是免費機器人,所以肯定不是太好,不過個人用足夠了,如下:

接着就可以寫消息監聽回調的邏輯了,這裏就不文字敘述了,太費勁了,註釋都是按行寫的,大家可以直接去拉取源碼,簡單方便。

然後就可以本地啓動試試了

就到這了,也希望對你能有些幫助。

看着文件和代碼都不少,其實就只是一些邏輯判斷而已

看一眼API文檔,怎麼發揮就看你自己了,消息監聽這裏的判斷也只做了文本消息的判斷而已。

你如果想用我這些東西,拉下代碼 config.js 裏換下token和一些配置信息就可以,當然我在不停更新,功能會越來越多,所以倉庫中代碼和文中會有些不一樣,使用時簡單看下代碼,都寫了詳細註釋,也很簡單。

項目源碼地址

https://github.com/isboyjc/wechaty-Robot

微信 : xzzs730(長按左側二維碼添加)

技術羣:上方微信+備註

(技術交流)

IT面試羣:上方微信+備註

(技術面試)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章