摘要:行代碼實現(xiàn)微信自動回復機器人一寫在前面今天下午又學到了另一種有趣的玩法微信自動回復機器人。將返回消息返回給微信消息的發(fā)送人。以此實現(xiàn)將微信個人號變身為聊天機器人。
30行代碼實現(xiàn)微信自動回復機器人 一、寫在前面
今天下午又學到了itchat另一種有趣的玩法---微信自動回復機器人。
程序很簡單僅僅三十行代碼左右,實現(xiàn)了機器人自動與你的微信好友聊天,下面是我的機器人小籠包跟自己微信好友聊天的截圖。
二、程序介紹本程序通過itchat獲取微信的相關消息,將微信消息傳輸?shù)綑C器人接口(本程序使用的是圖靈),獲取機器人的返回消息。將返回消息返回給微信消息的發(fā)送人。以此實現(xiàn)將微信個人號變身為聊天機器人。
三、具體實現(xiàn)安裝
itchat的安裝可以通過下面這行代碼
pip install itchat
登錄
itchat.auto_login() 這種方法將會通過微信掃描二維碼登錄,但是這種登錄的方式確實短時間的登錄,并不會保留登錄的狀態(tài),也就是下次登錄時還是需要掃描二維碼。
# 掃描二維碼登陸微信,實際上就是通過網(wǎng)頁版微信登陸 itchat.auto_login()
如果加上hotReload==True,那么就會保留登錄的狀態(tài),至少在后面的幾次登錄過程中不會再次掃描二維碼,該參數(shù)生成一個靜態(tài)文件itchat.pkl用于存儲登錄狀態(tài)
itchat.auto_login(hotReload=True)
微信信息的發(fā)送
微信可以發(fā)送各類消息,文本、圖片、文件等,下面是具體的方法的介紹。
itchat.send("Message Content", "toUserName")
該發(fā)送消息的函數(shù)需要兩個參數(shù),消息的內(nèi)容與接受者的UserName,即標識符。
用下面的代碼舉一個小栗子,實現(xiàn)向文件助手發(fā)送信息。
import itchat itchat.auto_login(hotReload=True) itchat.send(u"測試消息發(fā)送", "filehelper")微信消息的獲取
itchat 將根據(jù)接受到的消息類型尋找對應的已注冊的方法。如果一個消息類型沒有對應的注冊方法, 該消息將會被舍棄。在運行過程中也可以動態(tài)注冊方法, 注冊方式與結果不變。注冊方法不帶具體對象注冊, 將注冊為普通消息的回復方法.
import itchat from itchat.content import * @itchat.msg_register(TEXT) #這里的TEXT表示如果有人發(fā)送文本消息,那么就會調(diào)用下面的方法 def simple_reply(msg): #這個是向發(fā)送者發(fā)送消息 itchat.send_msg("已經(jīng)收到了文本消息,消息內(nèi)容為%s"%msg["Text"],toUserName=msg["FromUserName"]) return "T reveived: %s" % msg["Text"] #返回的給對方的消息,msg["Text"]表示消息的內(nèi)容
帶對象參數(shù)注冊, 對應消息對象將調(diào)用該方法,其中isFriendChat表示好友之間,isGroupChat表示群聊,isMapChat表示公眾號。
import itchat from itchat.content import * @itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True) def text_reply(msg): msg.user.send("%s : %s" % (mst.type, msg.text))
消息類型
向注冊方法傳入的 msg 包含微信返回的字典的所有內(nèi)容.itchat 增加 Text, Type(也就是參數(shù)) 鍵值, 方便操作。
itcaht.content 中包含所有的消息類型參數(shù)。例如圖片、語音、名片、分享等,也對應不同的注冊參數(shù):
圖片對應
itchat.content.PICTURE
語音對應
itchat.content.RECORDING
名片對應
itchat.content.CARD
其余的可以參考官方API
https://pypi.org/project/itchat/
import itchat @itchat.msg_register(itchat.content.TEXT) def print_content(msg): print(msg["Text"]) itchat.auto_login() itchat.run()
通過運行上面的代碼,實現(xiàn)基礎的文本信息的接收。
實現(xiàn)與圖靈機器人的交互實現(xiàn)機器人有很多種方法,最簡單的就是使用他人提供的接口。這里以圖靈機器人為例,演示這一功能。圖靈機器人簡單而言就是以一定的規(guī)則給圖靈的服務器發(fā)送數(shù)據(jù)包(包含你對他說的話)圖靈的服務器會以一定的規(guī)則給你返回數(shù)據(jù)包(包含他回復你的話)
你需要一個Tuling Key來告訴圖靈服務器你有權和他對話。
18edce3ce905a4c1dbb965e6b35c3834d 2eb720a8970964f3f855d863d24406576 31107d5601866433dba9599fac1bc0083 471f28bf79c820df10d39b4074345ef8c
接下來需配置圖靈機器人
{ "key" : "TULING_KEY", "info" : "YOUR_MSG", "userid" : "USERID", }
下面使用圖靈機器人向好友發(fā)送了hello
#coding=utf8 import requests apiUrl = "http://www.tuling123.com/openapi/api" data = { "key" : "8edce3ce905a4c1dbb965e6b35c3834d", # 如果這個Tuling Key不能用,那就換一個 "info" : "hello", # 這是我們發(fā)出去的消息 "userid" : "wechat-robot", # 這里你想改什么都可以 } # 我們通過如下命令發(fā)送一個post請求 r = requests.post(apiUrl, data=data).json() # 讓我們打印一下返回的值,看一下我們拿到了什么 print(r)
完整代碼:
import requests import itchat KEY = "8edce3ce905a4c1dbb965e6b35c3834d" def get_response(msg): # 這里實現(xiàn)與圖靈機器人的交互 # 構造了要發(fā)送給服務器的數(shù)據(jù) 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 # 這里實現(xiàn)微信消息的獲取 @itchat.msg_register(itchat.content.TEXT) def tuling_reply(msg): # 為了保證在圖靈Key出現(xiàn)問題的時候仍舊可以回復,這里設置一個默認回復 defaultReply = "I received: " + msg["Text"] # 如果圖靈Key出現(xiàn)問題,那么reply將會是None reply = get_response(msg["Text"]) # a or b的意思是,如果a有內(nèi)容,那么返回a,否則返回b # 有內(nèi)容一般就是指非空或者非None,你可以用`if a: print("True")`來測試 return reply or defaultReply # 為了讓實驗過程更加方便(修改程序不用多次掃碼),我們使用熱啟動 itchat.auto_login(hotReload=True) itchat.run()
itchat不僅僅能夠?qū)崿F(xiàn)自動回復,還有其他的相關功能比如群發(fā)助手,好友單刪檢測,獲取微信好友信息等功能,后續(xù)會慢慢去體驗各種玩法。
小提示:不要頻繁操作,否則會禁止登錄web微信。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43109.html
摘要:是一款開源的微信個人號,進行了一系列的封裝,提供簡單好用的接口,然后開發(fā)者可以在其之上進行微信機器人的開發(fā)。注意這行代碼實現(xiàn)了登錄微信個人號并打印出所收到的消息。大家可以根據(jù)自己的需要定制出強大的個人微信號機器人。 現(xiàn)在,日常生活已經(jīng)離不開微信,本文將會拋磚引玉演示如何使用wechaty操作微信個人號做一些有意思的東西,可以實現(xiàn)自動通過好友請求、關鍵詞回復、自動拉群等功能。大大提高了社...
摘要:是一個開源低代碼的機器學習庫,可自動執(zhí)行機器學習工作流。它是一種端到端的機器學習和模型管理工具,可以以指數(shù)方式加快實驗周期并提高您的工作效率。與其他開源機器學習庫相比,是一個替代的低代碼庫,可用于僅用幾行代碼替換數(shù)百行代碼。 ...
摘要:上一篇接入指南這部分是實現(xiàn)簡單的自動回復,當然也是很大一部分功能的實現(xiàn)基礎,這里使用了圖靈機器人的接口。的微信一年沒更新了如上圖,發(fā)送消息則會回復一個內(nèi)容一樣的消息,一個簡單的自動回復就實現(xiàn)了。 上一篇:接入指南這部分是實現(xiàn)簡單的自動回復,當然也是很大一部分功能的實現(xiàn)基礎,這里使用了圖靈機器人的接口。效果圖如下: showImg(https://segmentfault.com/img...
閱讀 1518·2023-04-25 17:41
閱讀 3040·2021-11-22 15:08
閱讀 842·2021-09-29 09:35
閱讀 1604·2021-09-27 13:35
閱讀 3322·2021-08-31 09:44
閱讀 2715·2019-08-30 13:20
閱讀 1938·2019-08-30 13:00
閱讀 2556·2019-08-26 12:12