前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
又到了学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 serve
r端口。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.cnblogs.com/Qqun261823976/p/16628857.html
本站部分图文来源于网络,如有侵权请联系删除。