“ 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面試羣:上方微信+備註
(技術面試)