1. 程式人生 > >Python實現微信自動拉群機器人

Python實現微信自動拉群機器人

微信群的使用者新增邏輯是 —— 當群人數達到100人後,使用者無法再通過掃描群二維碼加入,只能讓使用者先新增群內聯絡人微信,再由聯絡人把使用者拉進來。這樣,聯絡人員的私人微信會新增大量陌生人,給其帶來不必要的打擾,而且純人工操作,也容易出現紕漏。 那麼,是否可以通過程式碼,做一個自動拉群機器人呢? 由微信機器人來實現自動加群功能,一勞永逸解決人工拉群的麻煩。 當然可以!@西秦公子 就用Python 創造了一個微信自動拉群機器人,並把它部署執行在UCloud雲平臺上。 現在,他把機器人構建過程及程式碼 都分享了出來,一起來看看吧~ 我們在 UCloud 上運行了 Linux中國 的翻譯平臺,同時,最近我們的另外一個專案 運維密碼發展迅猛,體驗群很快就達到了 100 人,達到了 100 人後,就沒有辦法讓使用者通過掃描二維碼來加群,只能讓使用者加我們的微信,然後由我們來把使用者拉群。這樣十分不便,而且也容易出現紕漏。 於是我們便考慮在雲主機上,執行一個微信機器人,由微信機器人來實現加群,免去手動拉群的麻煩。具體實現過程如下:  程式碼實現 我們的核心需求主要是兩個: 讀取使用者新增好友的驗證資訊 根據驗證資訊,傳送不同的邀請連結 首先,我們要去建立一個機器人的例項,程式碼如下 from wxpy import * bot = Bot('bot.pkl',console_qr=True) 這兩行程式碼引入了 wxpy ,並生成了一個 bot 例項。這個例項會將我們的登入資訊儲存到 bot.pkl 中,這樣我們在短時間內的機器人重啟時,就不用重複登入了。 接下來,我們定義一個函式來校驗使用者的驗證資訊中,是否有我們需要的關鍵詞。 ''' 驗證資訊 ''' def valid_msg(msg):     return '運維密碼' in msg.text.lower() 並且定義一個方法,用來邀請使用者加入到我們的運維密碼工作群中。 ''' 定義邀請使用者的方法 ''' def invite(user):     group =  bot.groups().search('“運維密碼”體驗群')     group[0].add_members(user, use_invitation=True) 這個裡面的關鍵是我們要使用 bot 的 groups 方法來獲取到所有的使用者,並使用搜索,取到我們想要的資料。 在這裡我是使用了資料的 第一個結果,當然,你也可以在搜尋時,使用 ensure_one 方法來保證只返回一個結果,而不是一個數組。 找到我們要邀請的使用者以後,就可以使用 group 的 add_members 方法來邀請使用者加入到群聊。由於我們的群已經到了 100人的限制。所以這裡將第二個引數設定為 true 。 上述的兩個方法,我們基本完成了我們需要使用的部分。 接下來,我們就要讓機器人來自動處理我們的請求訊息了。 ''' 處理加好友資訊 ''' @bot.register(msg_types=FRIENDS)def new_friends(msg):     user = msg.card.accept()     if valid_msg(msg):         invite(user)     else:         user.send('Hello {},你忘了填寫加群口令,快回去找找口令吧'.format(user.name)) 這裡最關鍵的是第一行的 @bot.register(msg_types=FRIENDS),這行程式碼是指註冊一個監聽器,來監聽型別是 FRIEDNS 的訊息,也就是加好友的訊息。 然後定義了一個新的函式 new_friends(msg),在這個函式裡,我們定義 user 為接受了使用者的資訊,並獲取他的身份資訊。 並且呼叫 valid_msg 的方法來判斷新增好友的資訊是否存在,如果返回的結果為真,就呼叫邀請使用者的方法。 基礎環境安裝 由於我們的主機執行的是 CentOS 7.2 ,自帶的是 Python 2.7.5 ,而 wxpy 需要執行在 Python 3 下,所以我們首先進行的是 Python 3 的安裝。 執行如下命令來安裝 Python 3 yum install epel-release yum install python34 接下來安裝 pip yum install python34-setuptools easy_install-3.4 pip 安裝完成 Python 3 和 pip ,接下來我們就可以開始安裝 wxpy 了 在命令列中執行 pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy 至此,就完成了基礎環境搭建工作,機器人實現程式碼就可以順利執行在此雲主機上了。 程式碼覆盤及設計理念解析 以上就是微信拉群機器人的全部實現過程,最終效果如下圖: 就微信機器人來說,最關鍵的,是要對機器人接受到的資訊註冊監聽器。通過監聽訊息的型別、訊息的內容,來執行對應的操作。 比如我監聽的事 FRIENDS 訊息,同樣的也可以監聽好友訊息等等。通過不同的監聽模式來實現我們的具體功能是核心。如果我們把程式碼精簡一下,最終的程式碼就是 #!/usr/bin/env python3 # coding: utf-8 from wxpy import * bot = Bot() @bot.register(msg_types=FRIENDS) def new_friends(msg):    處理好友邏輯程式碼 最少的情況下只需要這些程式碼,就足夠我們啟動機器人了。當然,這樣並不是最佳實踐,程式碼的可讀性還有待提高。