在移動社交時代,微信已經成為我們生活不可或缺的一部分。2017年的《微信數據報告》中顯示:每天有380億條消息從微信上發出,其中6億條是語音消息,有350萬個活躍的公眾賬號,并存在著8億活躍粉絲。在其他諸如支付、出行等方面,也更是與我們的生活休憩相關。正如它的slogan那樣:微信,是一個生活方式。
和微信有關的第三方框架很多,比如「wxpy」「wxBot」等,今天要使用的是其中著名的「itchat」Python模塊,它是由第三方開發者@LittleCoder等架構實現的接口,該API的使用場景可以不僅僅只是一個微信機器人,更多的功能可以由我們自己去發現拓展?!竔tchat」的功能非常強大,調用卻十分簡單,同時,將「itchat」結合「matplotlib」「jieba」等模塊,可以對我們的微信好友的信息進行一些收集與分析,讓我們能更直觀的了解我們自己的圈子。
一個自動回復機器人
微信自上線以來,一直沒有自動回復的功能,想必是有他們的理念。但是有些人群,確實對此功能有一定需求,我舉兩個栗子:
不愿時刻被消息打擾的人 消息需要批量處理的人們(比如微商)對此,我設計了幾個功能:
功能列表:
[x] 收到消息立即自動回復 [x] 收到消息延遲指定時間回復 [x] 對不同好友定制不同的回復內容 [x] 在手機端隨時進行控制itchat的原理是通過掃碼進行遠程微信網頁端的登錄,然后通過在移動端進行操作,網頁端進行響應,來實現一些功能,雖然似乎繞了個彎子,但是在微信的限制下,這似乎已經是一種最佳的方式了,猶如戴著鐐銬起舞。
首先我們需要考慮別的問題是:程序如何在微信端接收到你的指令。此時出現了一個非常重要的角色:文件管理器。(當網頁端微信登陸后,消息列表會出現)此時,文件管理器充當了移動端和web端的橋梁。比如你給文件管理器傳一個字符串作為指令,網頁端接收到數據后就能根據你的預定來執行相應操作。
我們可以先通過設定幾個全局變量來做作為功能的開關和保存數據的容器。
#自動回復開關SWITCH_REPLY=True#延遲回復開關SWITCH_DELAY=False#延遲時間DELAY_TIME=120#消息前綴開關SWITCH_PREFIX=True#消息前綴內容PREFIX_CONTENT="[自動回復]"#回復內容字典REPLY_DICT={}#延遲回復字典DELAY_REPLY_DICT={}
然后通過判斷web端在”文件管理器“中接收到的字符串指令來進行不同操作,這一部分的代碼比較簡單且冗長,這里就不貼出來了,完整源碼地址將會在文末給出。
假如此時我們收到了朋友的消息,需要程序給出自動回復。
#獲取發送消息的朋友的信息 target_friend=itchat.search_friends(userName = msg['FromUserName']) if target_friend: #獲取ta的昵稱 nickName=target_friend['NickName'] if not REPLY_DICT.__contains__(nickName): #設置默認回復 REPLY_DICT[nickName]="抱歉我有事暫未看到消息,稍后回復,若有急事可以電話聯系(•ω•`)" reply_content=REPLY_DICT[nickName] #判斷自動回復開關 if SWITCH_REPLY: #判斷延時回復開關 if SWITCH_DELAY: localtime = time.time() DELAY_REPLY_DICT[nickName]=[localtime,msg['FromUserName']] print (DELAY_REPLY_DICT) if not SWITCH_DELAY: #判斷消息前綴開關 if SWITCH_PREFIX: reply_content = PREFIX_CONTENT + REPLY_DICT[nickName] else: reply_content = REPLY_DICT[nickName] #發送消息 itchat.send(reply_content, toUserName=msg['FromUserName'])
新聞熱點
疑難解答