前言
嗨嘍,大家好呀~這里是愛看美女的茜茜吶
又到了學Python時刻~激不激動,開不開森 !
web版的微信有專門的實時收發訊息api,可以用Python直接呼叫,但是現在基本上登錄不了web版微信,所以就用不了了,
但這不是還有windows版的微信嗎,于是在基于前輩寫好的第三方庫,今天我們來實作一下實時收發資訊,實作自動聊天機器人,
效果展示
微信實時收發訊息
1、第三方庫
基于第三方pc-wechat-hook-http-api實作微信實時收發訊息,
需要注意的是,此庫基于3.6.0.18版本微信,下載對應版本微信后,直接覆寫安裝,這樣可以保留聊天記錄,
2、開啟注入dll
想要實時獲取微信訊息,需要劫持回應的入口,這一部分內容我們無需過多關心技術細節,只需傻瓜式點擊一下即可,
從pc-wechat-hook-http-api官方地址下載到如下三個檔案,
將HPSocket4C.dll檔案復制到微信目錄下(例如E:\Tencent\WeChat[3.6.0.18])
點擊Daen注入器.exe檔案:
其中:
1.檔案目錄是指微信安裝路徑,參考上圖,
2.DLL路徑指的是DaenWxHook.dll檔案的完整路徑,
3.行程引數直接使用默認即可,其中圖中8089指本地用于接收微信實時訊息的http server埠,8055指的是dll開啟的http server埠,發送訊息時只需往這個埠post資料即可,
點擊注入并啟動,登錄微信即可,
3、實時收發訊息
實時收發訊息官方檔案:https://www.apifox.cn/apidoc/project-1222856/doc-1012539
接收微信訊息
對于實時接收訊息,簡單來說,就是在本地創建一個http server,埠與行程引數一致
即默認地址為:http://localhost:8089/wechat/,我們通過使用flask庫創建http server
from flask import Flask, request import json import requests app = Flask(__name__) def on_rcv_chatroom_msg(from_wxid, msg): print("收到群訊息") def on_rcv_p2p_txt(from_wxid, msg_txt): print("收到文本訊息", from_wxid, msg_txt) @app.route('/wechat/', methods=['get', 'post']) def wechat(): data = request.stream.read() data = data.decode('utf-8') data = json.loads(data) type = data['type'] if type == 'D0003': data = data['data'] msg = data['msg'] from_wxid = data['fromWxid'] if "@chatroom" in from_wxid: on_rcv_chatroom_msg(from_wxid, msg) else: on_rcv_p2p_txt(from_wxid, msg) return '' if __name__ == '__main__': app.run(debug=True, port=8089)
發送微信訊息
對于發送訊息來說,往指定的埠(默認8055)post訊息即可:
import json import requests def send_msg(wxid, is_img, msg): if is_img: payload = {"type": "Q0010", "data": {"wxid": wxid, "path": msg}} else: payload = {"type": "Q0001", "data": {"wxid": wxid, "msg": msg}} headers = { 'User-Agent': 'apifox/1.0.0 (https://www.apifox.cn)', 'Content-Type': 'application/json' } # 請求url url = 'http://127.0.0.1:8055/DaenWxHook/client/' # 請求引數 # 呼叫post response = requests.post(url, json=payload, headers=headers) # response 回應物件 # 獲取回應狀態碼 print('狀態碼:', response.status_code) # 獲取回應頭 print('回應頭資訊:', response.headers) # 獲取回應正文 print('回應正文:', response.text) def send_txt_msg(wxid, txt): send_msg(wxid, False, txt) def send_img_msg(wxid, img_path): send_msg(wxid, True, img_path)
如上,分別實作了發送文本訊息與圖片訊息函式,
自動聊天機器人
聊天機器人我們同樣站在巨人肩膀上,使用青云客提供的api,實作自動對話,
需要注意的是:青云客的機器人是女性,且名稱為菲菲,如果想自定義名稱,我們直接將回復的文本中的菲菲替換成自定義的名稱即可
實作代碼如下:
完整原始碼、素材加Q裙:261823976獲取~ def talk_with_robot(msg, robot_name=None): url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg)) html = requests.get(url) rt = html.json()["content"] rt = rt.replace("{br}","\n") if robot_name is not None: rt = rt.replace("菲菲", robot_name) return rt
尾語 ??
感謝你觀看我的文章吶~本次航班到這里就結束啦 ??
希望本篇文章有對你帶來幫助 ??,有學習到一點知識~
躲起來的星星??也在努力發光,你也要努力加油(讓我們一起努力叭),
最后,博主要一下你們的三連呀(點贊、評論、收藏),不要錢的還是可以搞一搞的嘛~
不知道評論啥的,即使扣個6666也是對博主的鼓舞吖 ?? 感謝 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/502829.html
標籤:其他
