【Py大法系列--01】20多行代碼生成你的微信聊天機(jī)器人

前言

近期Stack Overflow公布了一項(xiàng)調(diào)查顯示渔欢,Python已經(jīng)成了發(fā)展最快的主流編程語(yǔ)言任内,Python搭乘著數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)以及人工智能的浪潮赋焕,席卷了整個(gè)技術(shù)圈。越來越多的人想了解勾哩、想學(xué)Python,從程序猿到數(shù)據(jù)分析師根盒,從已退休的耄耋老者到乳臭未干的小學(xué)生,是的物蝙,你沒聽錯(cuò)炎滞,有圖有真相:


嚇人的票圈

到底Python的魅力在于哪?到底它有著什么神奇的力量诬乞?尼克決定以一個(gè)較為輕松的專題册赛,帶大家認(rèn)識(shí)Python。

今天干什么

有天剛好發(fā)現(xiàn)了一個(gè)好玩的Python庫(kù)(活躍的開源社區(qū)震嫉,各種第三方庫(kù)也是Python能過流行起來的原因):itchat森瘪。itchat是一個(gè)開源的微信Python Api,貌似是基于網(wǎng)頁(yè)版微信做的票堵。主要支持以下幾種場(chǎng)景:消息獲取扼睬、消息發(fā)送和應(yīng)用多開。既然可以獲取消息和回復(fù)消息悴势,那我們剛好可以做一個(gè)自動(dòng)回復(fù)消息的機(jī)器人窗宇。話不多說,看看itchat怎么用特纤。

itchat簡(jiǎn)單介紹

  • 登陸
    itchat.auto_login
    
  • itchat安裝
    可以通過本命令安裝itchat:
    pip install itchat
    
  • 給特定的人(如文件助手)發(fā)送消息
    import itchat 
    itchat.auto_login() itchat.send('Hello, filehelper', toUserName='filehelper')
    
  • 回復(fù)消息
    import itchat
    @itchat.msg_register(itchat.content.TEXT)
    def text_reply(msg):
        return msg.text itchat.auto_login() itchat.run()
    

其余接口和Api各位可參考itchat的官方文檔军俊。有了這三個(gè)接口,我們就可以做一個(gè)自己的機(jī)器人了捧存。

如何定制自己的機(jī)器人

  • 選擇機(jī)器人Api
    我選擇的機(jī)器人Api是圖靈粪躬,一款免費(fèi)的機(jī)器人接口担败,官方地址為:圖靈機(jī)器人。我用到的Api接口為消息回復(fù)接口:
    api_url = 'http://www.tuling123.com/openapi/api'
    data = {
        'key': KEY,
        'info': msg,
    }
    
    其中api_url為api調(diào)用地址镰官,KEY為應(yīng)用appkey提前,我的key為
    KEY = '9826d3b387c9483badb65992bfbf63bc'
    
    大家可以隨便用。
  • 所有的代碼
    # coding=utf8
    
    
    import requests
    import itchat
    
    
    KEY = '9826d3b387c9483badb65992bfbf63bc'
    
    
    def get_response(msg):
        print("bei diaoyong!")
        api_url = 'http://www.tuling123.com/openapi/api'
        data = {
            'key': KEY,
            'info': msg,
        }
        try:
            r = requests.post(api_url, data=data).json()
            return r.get('text')
        except:
            return
    
    
    @itchat.msg_register(itchat.content.TEXT)
    def tuling_reply(msg):
        print(msg.User)
        print(msg.User['NickName'] + msg['Text'])
        defaultReply = 'I received: ' + msg['Text']
        reply = "I am a Robot:" + get_response(msg['Text'])
        return reply or defaultReply
    
    
    itchat.auto_login(hotReload=False)
    itchat.run()
    
    

實(shí)際上所有的核心代碼不到30行朋魔,即可實(shí)現(xiàn)了自動(dòng)機(jī)器人的功能岖研。

  • 代碼講解
    get_response函數(shù)的參數(shù)為msg,將msg發(fā)送給圖靈api警检,將返回消息回復(fù)孙援;tuling_reply函數(shù)的作用是,收到消息后扇雕,將消息轉(zhuǎn)發(fā)給圖靈api拓售,再將圖靈機(jī)器人的回復(fù)回復(fù)給消息的發(fā)送人。@itchat.msg_register(itchat.content.TEXT)是回復(fù)消息的裝飾器镶奉。在以后的Python學(xué)習(xí)中會(huì)給大家講解础淤。

機(jī)器人演示效果

我的女神瑾瑾和機(jī)器人快樂的聊天記錄:


A1.png
A2.png
A3.png
A4.png

不過它似乎有點(diǎn)笨,還有點(diǎn)傲嬌哨苛。瑾瑾問它顏值打幾分都不知道怎么回答鸽凶,當(dāng)然是99分啦。

它還能做什么

單調(diào)實(shí)用的api巧妙的運(yùn)用即可創(chuàng)造出很多價(jià)值建峭,這也是眾多Python庫(kù)的特點(diǎn)之一玻侥,簡(jiǎn)單來說就是Python大法好~目前我能想到的是以下幾種:

  • 防止消息撤回,所有的消息都會(huì)被備案
  • 自動(dòng)回復(fù)消息:加入我們有自己的預(yù)置消息庫(kù)亿蒸,可以拿itchat做個(gè)值班小秘書
  • 監(jiān)控群聊凑兰,別趁我不在偷偷開車嘿嘿嘿嘿... ...
  • 搶紅包就不用想了,微信網(wǎng)頁(yè)版不支持搶紅包
  • ... ...

后記

是不是感受到了Python大法的魅力呢边锁?關(guān)注我的簡(jiǎn)書姑食,關(guān)注微信公眾號(hào):尼克毛的技術(shù)小站,跟我一起學(xué)知識(shí)茅坛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末音半,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贡蓖,更是在濱河造成了極大的恐慌祟剔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摩梧,死亡現(xiàn)場(chǎng)離奇詭異物延,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仅父,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門叛薯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浑吟,“玉大人,你說我怎么就攤上這事耗溜∽榱Γ” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵抖拴,是天一觀的道長(zhǎng)燎字。 經(jīng)常有香客問我,道長(zhǎng)阿宅,這世上最難降的妖魔是什么候衍? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮洒放,結(jié)果婚禮上蛉鹿,老公的妹妹穿的比我還像新娘。我一直安慰自己往湿,他們只是感情好妖异,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著领追,像睡著了一般他膳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绒窑,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天棕孙,我揣著相機(jī)與錄音,去河邊找鬼回论。 笑死散罕,一個(gè)胖子當(dāng)著我的面吹牛分歇,可吹牛的內(nèi)容都是我干的傀蓉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼职抡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼葬燎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缚甩,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤谱净,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后擅威,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壕探,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年郊丛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了李请。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞧筛。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖导盅,靈堂內(nèi)的尸體忽然破棺而出较幌,到底是詐尸還是另有隱情,我是刑警寧澤白翻,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布乍炉,位于F島的核電站,受9級(jí)特大地震影響滤馍,放射性物質(zhì)發(fā)生泄漏岛琼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一纪蜒、第九天 我趴在偏房一處隱蔽的房頂上張望衷恭。 院中可真熱鬧,春花似錦纯续、人聲如沸随珠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窗看。三九已至,卻和暖如春倦炒,著一層夾襖步出監(jiān)牢的瞬間显沈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工逢唤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拉讯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓鳖藕,卻偏偏與公主長(zhǎng)得像魔慷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子著恩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 之前所做的有一個(gè)特點(diǎn)就是需要在樹莓派上連接一個(gè)USB麥克風(fēng)院尔,通過這個(gè)麥克風(fēng)來進(jìn)行語(yǔ)音的輸入,但是在實(shí)際使用場(chǎng)景上來...
    IConquer閱讀 7,409評(píng)論 2 75
  • 哈嘍,大家好伍茄,我是代碼君栋盹,好久沒發(fā)干貨啦~會(huì)不會(huì)被大家吐槽呀 大家都知道,最近代碼君迷上了Python敷矫,一直在研究...
    代碼君_Coder閱讀 1,492評(píng)論 0 4
  • 簡(jiǎn)書 不記得是從哪里聽到有簡(jiǎn)書這樣一個(gè)平臺(tái)例获,大概是在DISC雙證班群的小伙伴那里得知的音念,也有可能是在新精英的小伙...
    張磊老師閱讀 283評(píng)論 0 1
  • 每個(gè)人生命中都有無數(shù)人走過,想想那些自己真正愿意與之共處的人躏敢,到底是什么吸引了你闷愤? TA的容顏? TA的財(cái)富件余? T...
    趙妍華太陽(yáng)花閱讀 142評(píng)論 0 2
  • jdk1.8中提供了java.util.function包讥脐,里面提供了一大堆的接口。主要分為四類: 功能型的函數(shù)式...
    小孩真笨閱讀 176評(píng)論 0 0