話不多說,看效果圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNkRWO4YTZ2MmMjZDZ2QmY2IWO0E2N4QjZ0EDZ1QTYx8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
先說下原理:
微信接收到你說的話,發給機器人來回複,用回複的話傳參給鬥圖網,然後獲得鬥圖網傳回的圖檔,儲存後把圖檔再發給跟你鬥圖的人。
鬥圖啦官網API調用文檔
鬥圖啦官網 菜單欄的 站長開發→鬥圖啦API 即可看到 api 接口調用方式。urllib.request() 用于把圖檔連結儲存為本地圖檔。
requests 可以通過 post 和 get 兩種請求方式獲得 api 的傳回值。
itchat.send_image() 用于發送圖檔給微信好友。
import itchat
import requests
import urllib.request
# 獲得機器人的請求
def get_response(msg):
# 調用莉莉機器人,獲得回複
apiUrl = 'http://i.itpk.cn/api.php'
data = {
'question':msg,
}
r = requests.get(apiUrl, params = data) # get請求
text = r.text.encode('utf-8')[3:].decode('utf-8') # 去掉text文本裡的BOM開頭,就是獲得回複内容
# 通過回複的值,傳參給鬥圖啦api,擷取對應的圖
apiUrl = 'https://www.doutula.com/api/search'
data = {
'mime':2, # 指定jpg格式靜态圖
'page':0,
'keyword':text,
}
r = requests.post(apiUrl, data=data).json() # post請求
imgurl = r.get("data").get("list")[0].get("image_url") # 擷取傳回的第一個圖檔位址
urllib.request.urlretrieve(imgurl, "doutu.jpg") # 儲存圖檔名為doutu.jpg的本地圖檔
# 微信機器人
@itchat.msg_register(itchat.content.TEXT, isFriendChat = True)
def reply_msg(msg):
itchat.send_image(fileDir = "doutu.jpg", toUserName = msg['FromUserName']) # 将儲存在本地的圖檔發送給給你發消息的人
itchat.auto_login(hotReload = True) # 儲存微信登入狀态
itchat.run()
附: 手機版運作效果圖。
喜歡的點個贊❤吧!