用Python寫了一個微信聊天機(jī)器人
在我們的生活和工作當(dāng)中,很多時候我們并不能及時地回復(fù)消息,尤其是業(yè)務(wù)比較多的人,客戶給我們發(fā)消息我們不回又不好,但又沒有那么多精力時時回復(fù),這個時候智能機(jī)器人就能幫助我們解決很多問題。
像電商類的客服,像大的QQ群/微信群管理員,以及我們打游戲的時候,掛著腳本就行,機(jī)器人自動幫你回消息,一時半會兒不會得罪女朋友,哈哈哈!
今天就來教大家一招,16行Python代碼實(shí)現(xiàn)1個微信聊天智能機(jī)器人(圖靈),再也不用擔(dān)心不回消息被客戶罵了!
一、效果
我拿我自己的微信(左邊)登陸之后,用我助手的微信測試了一下,機(jī)器人接管了我的微信之后的聊天效果看起來還是不錯的:
二、項目思路
整體的思路如下圖所示:
三、代碼分析
1.安裝和導(dǎo)入模塊
這里要用到的兩個,itchat模塊和requests模塊,這是必不可少的一步,項目基于這兩個模塊運(yùn)行的。安裝方法很簡單,直接窗口鍵+R調(diào)出命令窗口,然后輸入指令安裝,比如說安裝itchat模塊就直接輸入 pip install itchat。微信搜索公眾號:Linux技術(shù)迷,回復(fù):linux 領(lǐng)取資料 。
提示一下,兩個模塊分開安裝,裝完1個再裝另一個。
安裝完成之后,我們就可以直接在代碼中導(dǎo)入模塊:
import itchat
import requests
2.申請圖靈機(jī)器人
這個項目的機(jī)器人是現(xiàn)成的圖靈機(jī)器人,我們需要去圖靈官網(wǎng)注冊一下,然后進(jìn)入后臺創(chuàng)建機(jī)器人,每個機(jī)器人都有1個api,這是我們要用到的。
圖靈機(jī)器人之前是有免費(fèi)版和體驗(yàn)版的,現(xiàn)在的話需要實(shí)名認(rèn)證一下才有,雖然每天只有100次的消息回復(fù),但對于測試者來玩玩是可以的。
圖靈還可以進(jìn)行關(guān)鍵詞的個性回復(fù),在后臺的“私有語料庫”設(shè)置一下就可以。
3.實(shí)現(xiàn)機(jī)器人功能
這里除了要有訪問網(wǎng)站的url之外,還要確定調(diào)用的是哪個機(jī)器人,因?yàn)榭赡苣愕暮笈_有多個機(jī)器人,這時候就用到了每個機(jī)器人特有的api,以及獲取要發(fā)送的消息,然后用于post方式發(fā)送請求,發(fā)送網(wǎng)站的url、機(jī)器人的api和要發(fā)送的消息,最后提取字典里面的text,最終進(jìn)行返回數(shù)據(jù)。
def get_response(msg):
apiUrl= "http://www.tuling123.com/openapi/api" #要訪問的網(wǎng)站
#key:機(jī)器人的key,info:要發(fā)送的消息
data={'key':KEY,'info':msg,'userid':"WeChat-robot"}
#發(fā)送請求:
r = requests.post(apiUrl,data=data)
return r["text"]
4.實(shí)現(xiàn)微信功能
如果有人給我們發(fā)消息,我們就調(diào)用上面返回的數(shù)據(jù),那么如何知道是否有人給你發(fā)消息?這個時候的我們就用到了裝飾器,itchat提供的 @itchat.msg_register() 就能實(shí)現(xiàn)這個功能;接著調(diào)用上面已經(jīng)寫好的機(jī)器人功能,最終返回機(jī)器人的信息或者發(fā)送者的信息。
為什么要加發(fā)送者的信息復(fù)制一遍發(fā)送?這是防止網(wǎng)絡(luò)等其他問題導(dǎo)致機(jī)器人沒有響應(yīng),這個時候誰給我們發(fā)什么消息,我們就自動給他回復(fù)同樣的消息,避免聊天時無反應(yīng)。
msg_register(itchat.content.TEXT).
def tuling_reply(user_data):
print(user_data)#用戶的信息包含給你發(fā)的消息
user=user_data["Text"]#用戶發(fā)你的信息
return_user = get_response(user_data["Text"])
print(return_user)
return return_user or user
5.彈出二維碼及循環(huán)程序
在程序運(yùn)行時我們需要彈出1個二維碼,讓我們掃碼后登陸,同時要保證程序一直處于運(yùn)行狀態(tài),不然程序只跑一遍就完了,這兩個功能在itchat都提供了,直接用就行。
itchat.auto_login()#掃碼登錄
itchat.run()#循環(huán)執(zhí)行
以上就是這個微信智能聊天機(jī)器人的代碼分析,這個假人還是不錯的,付費(fèi)版本我不知道,充錢肯定會更強(qiáng),整個下來不超過20行代碼。