如何用Python做一個(gè)微信機(jī)器人自動(dòng)拉群
引言
微信群的用戶添加邏輯是 —— 當(dāng)群人數(shù)達(dá)到100人后,用戶無(wú)法再通過(guò)掃描群二維碼加入,只能讓用戶先添加群內(nèi)聯(lián)系人微信,再由聯(lián)系人把用戶拉進(jìn)來(lái)。這樣,聯(lián)系人員的私人微信會(huì)添加大量陌生人,給其帶來(lái)不必要的打擾,而且純?nèi)斯げ僮?,也容易出現(xiàn)紕漏。
那么,是否可以通過(guò)代碼,做一個(gè)自動(dòng)拉群機(jī)器人呢? 由微信機(jī)器人來(lái)實(shí)現(xiàn)自動(dòng)加群功能,一勞永逸解決人工拉群的麻煩。
當(dāng)然可以。西秦公子 就用Python 創(chuàng)造了一個(gè)微信自動(dòng)拉群機(jī)器人,并把它部署運(yùn)行在UCloud云平臺(tái)上。
現(xiàn)在,他把機(jī)器人構(gòu)建過(guò)程及代碼 都分享了出來(lái),一起來(lái)看看吧~
我們?cè)?UCloud 上運(yùn)行了 Linux中國(guó) 的翻譯平臺(tái),同時(shí),最近我們的另外一個(gè)項(xiàng)目 運(yùn)維密碼 發(fā)展迅猛,體驗(yàn)群很快就達(dá)到了 100 人,達(dá)到了100人后,就沒(méi)有辦法讓用戶通過(guò)掃描二維碼來(lái)加群,只能讓用戶加我們的微信,然后由我們來(lái)把用戶拉群。這樣十分不便,而且也容易出現(xiàn)紕漏。
于是我們便考慮在云主機(jī)上,運(yùn)行一個(gè)微信機(jī)器人,由微信機(jī)器人來(lái)實(shí)現(xiàn)加群,免去手動(dòng)拉群的麻煩。具體實(shí)現(xiàn)過(guò)程如下:
目錄
- 代碼實(shí)現(xiàn);
- 部署到 UCloud;
- 代碼復(fù)盤 及 設(shè)計(jì)理念解析;
代碼實(shí)現(xiàn)
我們的核心需求主要是兩個(gè):
- 讀取用戶添加好友的驗(yàn)證信息
- 根據(jù)驗(yàn)證信息,發(fā)送不同的邀請(qǐng)鏈接
首先,我們要去創(chuàng)建一個(gè)機(jī)器人的實(shí)例,代碼如下
from wxpy import *
bot = Bot('bot.pkl',console_qr=True)
這兩行代碼引入了 wxpy ,并生成了一個(gè) bot 實(shí)例。這個(gè)實(shí)例會(huì)將我們的登陸信息保存到 bot.pkl 中,這樣我們?cè)诙虝r(shí)間內(nèi)的機(jī)器人重啟時(shí),就不用重復(fù)登陸了。
接下來(lái),我們定義一個(gè)函數(shù)來(lái)校驗(yàn)用戶的驗(yàn)證信息中,是否有我們需要的關(guān)鍵詞。
''' 驗(yàn)證信息 ''' def valid_msg(msg): return '運(yùn)維密碼' in msg.text.lower()
并且定義一個(gè)方法,用來(lái)邀請(qǐng)用戶加入到我們的運(yùn)維密碼工作群中。
'''
定義邀請(qǐng)用戶的方法
'''
def invite(user):
group = bot.groups().search('“運(yùn)維密碼”體驗(yàn)群')
group[0].add_members(user, use_invitation=True)
這個(gè)里面的關(guān)鍵是我們要使用bot的groups方法來(lái)獲取到所有的用戶,并使用搜索,取到我們想要的數(shù)據(jù)。
在這里我是使用了數(shù)據(jù)的 第一個(gè)結(jié)果,當(dāng)然,你也可以在搜索時(shí),使用 ensure_one 方法來(lái)保證只返回一個(gè)結(jié)果,而不是一個(gè)數(shù)組。
找到我們要邀請(qǐng)的用戶以后,就可以使用 group 的 add_memebers 方法來(lái)邀請(qǐng)用戶加入到群聊。由于我們的群已經(jīng)到了100人的限制。所以這里將第二個(gè)參數(shù)設(shè)置為 true 。
上述的兩個(gè)方法,我們基本完成了我們需要使用的部分。
接下來(lái),我們就要讓機(jī)器人來(lái)自動(dòng)處理我們的請(qǐng)求消息了。
'''
處理加好友信息
'''
@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))
這里最關(guān)鍵的是第一行的 @bot.register(msg_types=FRIENDS),這行代碼是指注冊(cè)一個(gè)監(jiān)聽(tīng)器,來(lái)監(jiān)聽(tīng)類型是 FRIEDNS 的消息,也就是加好友的消息。
然后定義了一個(gè)新的函數(shù) new_friends(msg),在這個(gè)函數(shù)里,我們定義 user 為接受了用戶的信息,并獲取他的身份信息。
并且調(diào)用 valid_msg 的方法來(lái)判斷添加好友的信息是否存在,如果返回的結(jié)果為真,就調(diào)用邀請(qǐng)用戶的方法。
部署到UCloud
接下來(lái)我們嘗試將項(xiàng)目部署到UCloud云主機(jī)上:
創(chuàng)建主機(jī)
- 注冊(cè) UCloud - 專業(yè)云計(jì)算服務(wù)商
- 點(diǎn)擊左側(cè)的 云主機(jī),然后點(diǎn)擊 創(chuàng)建主機(jī)
- 右側(cè)選擇 付費(fèi)方式,點(diǎn)擊 立即購(gòu)買
- 在支付確認(rèn)頁(yè)面,點(diǎn)擊 確認(rèn)支付
購(gòu)買成功后回到主機(jī)管理列表,如下所示:
這里注意記住你的外網(wǎng)IP,下面的ip替換成你的
基礎(chǔ)環(huán)境安裝
由于我們的主機(jī)運(yùn)行的是 CentOS 7.2 ,自帶的是 Python 2.7.5 ,而 wxpy 需要運(yùn)行在 Python 3 下,所以我們首先進(jìn)行的是 Python 3 的安裝。
執(zhí)行如下命令來(lái)安裝 Python 3
yum install epel-release yum install python34
接下來(lái)安裝 Pip
yum install python34-setuptools easy_install-3.4 pip
安裝完成 Python 3 和 pip ,接下來(lái)我們就可以開始安裝 wxpy 了
在命令行中執(zhí)行
pip3 install -i https://pypi.doubanio.com/simple/ -U wxpy
至此,就完成了基礎(chǔ)環(huán)境搭建工作,機(jī)器人實(shí)現(xiàn)代碼就可以順利運(yùn)行在此云主機(jī)上了。
代碼復(fù)盤 及 設(shè)計(jì)理念解析
以上就是微信拉群機(jī)器人的全部實(shí)現(xiàn)過(guò)程,最終效果如下圖:

就微信機(jī)器人來(lái)說(shuō),最關(guān)鍵的,是要對(duì)機(jī)器人接受到的信息注冊(cè)監(jiān)聽(tīng)器。通過(guò)監(jiān)聽(tīng)消息的類型、消息的內(nèi)容,來(lái)執(zhí)行對(duì)應(yīng)的操作。
比如我監(jiān)聽(tīng)的事 FRIENDS 消息,同樣的也可以監(jiān)聽(tīng)好友消息等等。通過(guò)不同的監(jiān)聽(tīng)模式來(lái)實(shí)現(xiàn)我們的具體功能是核心。如果我們把代碼精簡(jiǎn)一下,最終的代碼就是
#!/usr/bin/env python3 # coding: utf-8 from wxpy import * bot = Bot() @bot.register(msg_types=FRIENDS) def new_friends(msg): 處理好友邏輯代碼
最少的情況下只需要這些代碼,就足夠我們啟動(dòng)機(jī)器人了。當(dāng)然,這樣并不是最佳實(shí)踐,代碼的可讀性還有待提高。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python實(shí)現(xiàn)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例
- Python調(diào)用釘釘自定義機(jī)器人的實(shí)現(xiàn)
- Python使用微信接入圖靈機(jī)器人過(guò)程解析
- 基于python的itchat庫(kù)實(shí)現(xiàn)微信聊天機(jī)器人(推薦)
- python實(shí)現(xiàn)機(jī)器人卡牌
- Python實(shí)現(xiàn)微信機(jī)器人的方法
- Python3從零開始搭建一個(gè)語(yǔ)音對(duì)話機(jī)器人的實(shí)現(xiàn)
- 基于Python的微信機(jī)器人開發(fā) 微信登錄和獲取好友列表實(shí)現(xiàn)解析
- Python實(shí)現(xiàn)微信翻譯機(jī)器人的方法
- Python qqbot 實(shí)現(xiàn)qq機(jī)器人的示例代碼
- python實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人功能
- Python QQBot庫(kù)的QQ聊天機(jī)器人
- 使用python接入微信聊天機(jī)器人
- itchat-python搭建微信機(jī)器人(附示例)
- python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動(dòng)回復(fù)功能
- 手把手教你使用Python創(chuàng)建微信機(jī)器人
- python控制nao機(jī)器人身體動(dòng)作實(shí)例詳解
- Python開發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例
相關(guān)文章
Python基礎(chǔ)之標(biāo)準(zhǔn)庫(kù)和常用的第三方庫(kù)案例教程
這篇文章主要介紹了Python基礎(chǔ)之標(biāo)準(zhǔn)庫(kù)和常用的第三方庫(kù)案例教程,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
淺談Python中的可變對(duì)象和不可變對(duì)象
下面小編就為大家?guī)?lái)一篇淺談Python中的可變對(duì)象和不可變對(duì)象。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Python解決asyncio文件描述符最大數(shù)量限制的問(wèn)題
這篇文章主要介紹了Python解決asyncio文件描述符最大數(shù)量限制的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
python自動(dòng)查詢12306余票并發(fā)送郵箱提醒腳本
這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)查詢12306余票并發(fā)送郵箱提醒腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
python3 unicode列表轉(zhuǎn)換為中文的實(shí)例
今天小編就為大家分享一篇python3 unicode列表轉(zhuǎn)換為中文的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python繪制散點(diǎn)圖之可視化神器pyecharts
這篇文章主要介紹了Python繪制散點(diǎn)圖之可視化神器pyecharts,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07

