Python基于PC版微信实现机器人
Posted 走召大爷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基于PC版微信实现机器人相关的知识,希望对你有一定的参考价值。
在github
中有基于web
版的微信实现的实时收发消息api
,python
调用起来非常简单。但是目前来说,大部分的用户没法登录web
版的微信,因此也就没法使用。
今天我们介绍基于windows
版的微信,实现实时收发信息。本文站在巨人的肩膀上,基于第三方提供的库,实现自动聊天机器人。效果如下:
1 微信实时收发消息
1.1 第三方库
基于第三方pc-wechat-hook-http-api实现微信实时收发消息。
需要注意的是,此库基于3.6.0.18
版本微信。下载对应版本微信后,直接覆盖安装,这样可以保留聊天记录。
如果找不到对应版本的微信,可以直接到文末获取相关连接。
1.2 开启注入dll
想要实时获取微信消息,需要劫持响应的入口。这一部分内容我们无需过多关心技术细节,只需傻瓜式点击一下即可。
从pc-wechat-hook-http-api官方地址下载到如下三个文件。
如果
pc-wechat-hook-http-api
地址失效,读者可以直接到文末获取相关dll下载资源。
将HPSocket4C.dll
文件复制到微信目录下(例如E:\\Tencent\\WeChat\\[3.6.0.18]
)
点击Daen注入器.exe
文件:
其中:
- 文件目录是指微信安装路径,参考上图。
DLL
路径指的是DaenWxHook.dll
文件的完整路径。- 进程参数直接使用默认即可。其中图中8089指本地用于接收微信实时消息的
http server
端口。8055
指的是dll
开启的http server
端口,发送消息时只需往这个端口post
数据即可。
点击注入并启动,登录微信即可。
1.3 实时收发消息
实时收发消息官方文档:https://www.apifox.cn/apidoc/project-1222856/doc-1012539
1.3.1 接收微信消息
对于实时接收消息,简单来说,就是在本地创建一个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)
1.3.2 发送微信消息
对于发送消息来说,往指定的端口(默认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)
如上,分别实现了发送文本消息与图片消息函数。
2 自动聊天机器人
聊天机器人我们同样站在巨人肩膀上,使用青云客提供的api,实现自动对话。需要注意的是,青云客的机器人是女性,且名称为菲菲
,如果想自定义名称,我们直接将回复的文本中的菲菲
替换成自定义的名称即可,实现代码如下:
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
3 资源获取
- 【
3.6.0.18
版微信安装包】 关注公众号:Python学习实战
,回复:36018
- 【Daen注入器相关dll文件】 关注公众号:
Python学习实战
,回复:daen
- 【完整源码获取】关注公众号:
Python学习实战
,回复:robot
以上是关于Python基于PC版微信实现机器人的主要内容,如果未能解决你的问题,请参考以下文章