本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理
本文章來自騰訊雲 作者:Python進階者
想要學習Python?有問題得不到第一時間解決?來看看這里“1039649593”滿足你的需求,資料都已經上傳至文件中,可以自行下載!還有海量最新2020python學習資料。
點擊查看
前段時間寫過一篇微信好友大揭秘,很多朋友對itchat非常感興趣,今天下午又學到了itchat另一種有趣的玩法—微信自動回復機器人。
程序很簡單僅僅三十行代碼左右,實現了機器人自動與你的微信好友聊天。
本程序通過itchat獲取微信的相關消息,將微信消息傳輸到機器人接口(本程序使用的是圖靈),獲取機器人的返回消息。將返回消息返回給微信消息的發送人。以此實現將微信個人號變身為聊天機器人。
安裝
itchat的安裝可以通過下面這行代碼
pip install itchat
登錄
itchat.auto_login() 這種方法將會通過微信掃描二維碼登錄,但是這種登錄的方式確實短時間的登錄,並不會保留登錄的狀態,也就是下次登錄時還是需要掃描二維碼。
# 掃描二維碼登陸微信,實際上就是通過網頁版微信登陸 itchat.auto_login()
如果加上hotReload==True,那么就會保留登錄的狀態,至少在后面的幾次登錄過程中不會再次掃描二維碼,該參數生成一個靜態文件itchat.pkl用於存儲登錄狀態
itchat.auto_login(hotReload=True)
微信信息的發送
微信可以發送各類消息,文本、圖片、文件等,下面是具體的方法的介紹。
itchat.send('Message Content', 'toUserName')
該發送消息的函數需要兩個參數,消息的內容與接受者的UserName,即標識符。
用下面的代碼舉一個小栗子,實現向文件助手發送信息。
import itchat itchat.auto_login(hotReload=True) itchat.send(u'測試消息發送', 'filehelper')
import itchat from itchat.content import * @itchat.msg_register(TEXT) #這里的TEXT表示如果有人發送文本消息,那么就會調用下面的方法 def simple_reply(msg): #這個是向發送者發送消息 itchat.send_msg('已經收到了文本消息,消息內容為%s'%msg['Text'],toUserName=msg['FromUserName']) return "T reveived: %s" % msg["Text"] #返回的給對方的消息,msg["Text"]表示消息的內容
import itchat @itchat.msg_register(itchat.content.TEXT) def print_content(msg): print(msg['Text']) itchat.auto_login() itchat.run()
通過運行上面的代碼,實現基礎的文本信息的接收。
實現與圖靈機器人的交互
實現機器人有很多種方法,最簡單的就是使用他人提供的接口。這里以圖靈機器人為例,演示這一功能。圖靈機器人簡單而言就是以一定的規則給圖靈的服務器發送數據包(包含你對他說的話)圖靈的服務器會以一定的規則給你返回數據包(包含他回復你的話)
你需要一個Tuling Key來告訴圖靈服務器你有權和他對話。
8edce3ce905a4c1dbb965e6b35c3834d
eb720a8970964f3f855d863d24406576
1107d5601866433dba9599fac1bc0083
71f28bf79c820df10d39b4074345ef8c
接下來需配置圖靈機器人
{ 'key' : 'TULING_KEY', 'info' : 'YOUR_MSG', 'userid' : 'USERID', }
下面使用圖靈機器人向好友發送了hello
#coding=utf8 import requests apiUrl = 'http://www.tuling123.com/openapi/api' data = { 'key' : '8edce3ce905a4c1dbb965e6b35c3834d', # 如果這個Tuling Key不能用,那就換一個 'info' : 'hello', # 這是我們發出去的消息 'userid' : 'wechat-robot', # 這里你想改什么都可以 } # 我們通過如下命令發送一個post請求 r = requests.post(apiUrl, data=data).json() # 讓我們打印一下返回的值,看一下我們拿到了什么 print(r)
完整代碼:
import requests import itchat KEY = '8edce3ce905a4c1dbb965e6b35c3834d' def get_response(msg): # 這里實現與圖靈機器人的交互 # 構造了要發送給服務器的數據 apiUrl = 'http://www.tuling123.com/openapi/api' data = { 'key' : KEY, 'info' : msg, 'userid' : 'wechat-robot', } try: r = requests.post(apiUrl, data=data).json() # 字典的get方法在字典沒有'text'值的時候會返回None而不會拋出異常 return r.get('text') # 為了防止服務器沒有正常響應導致程序異常退出,這里用try-except捕獲了異常 # 如果服務器沒能正常交互(返回非json或無法連接),那么就會進入下面的return except: # 將會返回一個None return # 這里實現微信消息的獲取 @itchat.msg_register(itchat.content.TEXT) def tuling_reply(msg): # 為了保證在圖靈Key出現問題的時候仍舊可以回復,這里設置一個默認回復 defaultReply = 'I received: ' + msg['Text'] # 如果圖靈Key出現問題,那么reply將會是None reply = get_response(msg['Text']) # a or b的意思是,如果a有內容,那么返回a,否則返回b # 有內容一般就是指非空或者非None,你可以用`if a: print('True')`來測試 return reply or defaultReply # 為了讓實驗過程更加方便(修改程序不用多次掃碼),我們使用熱啟動 itchat.auto_login(hotReload=True) itchat.run()
itchat不僅僅能夠實現自動回復,還有其他的相關功能比如群發助手,好友單刪檢測,獲取微信好友信息等功能,后續會慢慢去體驗各種玩法。
小提示:不要頻繁操作,否則會禁止登錄web微信。