前言
近期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為api調(diào)用地址镰官,KEY為應(yīng)用appkey提前,我的key為api_url = 'http://www.tuling123.com/openapi/api' data = { 'key': KEY, 'info': msg, }
大家可以隨便用。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ī)器人快樂的聊天記錄:
不過它似乎有點(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í)茅坛。