Python基于PC版微信实现机器人

简介: Python基于PC版微信实现机器人

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

相关文章
|
1月前
|
JSON 机器人 API
详解如何使用 Python 操作 Telegram(电报)机器人(一)
详解如何使用 Python 操作 Telegram(电报)机器人(一)
152 8
|
1月前
|
机器人 数据库 Python
详解如何使用 Python 操作 Telegram(电报)机器人(二)
详解如何使用 Python 操作 Telegram(电报)机器人(二)
101 2
|
30天前
|
人工智能 自然语言处理 机器人
用Python构建你的第一个聊天机器人
【10月更文挑战第7天】在这篇文章中,我们将一起探索如何利用Python编程语言和AI技术,一步步打造一个基础的聊天机器人。无论你是编程新手还是有一定经验的开发者,都能通过这个指南获得启发,并实现一个简单的对话系统。文章将引导你理解聊天机器人的工作原理,教你如何收集和处理用户输入,以及如何设计机器人的响应逻辑。通过动手实践,你不仅能够学习到编程技能,还能深入理解人工智能在语言处理方面的应用。
27 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用Python实现深度学习模型:智能灾害响应与救援机器人
使用Python实现深度学习模型:智能灾害响应与救援机器人
77 16
|
2月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
66 2
|
3月前
|
监控 机器人 Shell
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
137 1
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
|
3月前
|
机器学习/深度学习 算法 机器人
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】A题 水果采摘机器人的图像识别 Python代码解析
本文介绍了2023年第十三届APMCM亚太地区大学生数学建模竞赛A题的Python代码实现,详细阐述了水果采摘机器人图像识别问题的分析与解决策略,包括图像特征提取、数学模型建立、目标检测算法使用,以及苹果数量统计、位置估计、成熟度评估和质量估计等任务的编程实践。
76 0
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】A题 水果采摘机器人的图像识别 Python代码解析
|
3月前
|
机器学习/深度学习 人工智能 算法
用Python实现简单的聊天机器人
【8月更文挑战第31天】 本文将介绍如何使用Python语言和AIML库来实现一个简单的聊天机器人。我们将从基本的安装和配置开始,然后逐步深入到聊天机器人的实现过程。最后,我们将展示如何训练我们的机器人以使其更加智能。无论你是编程新手还是有经验的开发者,都可以从本文中获得实用的知识。
|
3月前
|
人工智能 搜索推荐 安全
从零到一:微信机器人开发的实战心得
从零到一:微信机器人开发的实战心得
224 2
|
3月前
|
监控 机器人 Java
【python】调用钉钉机器人发起通知
【python】调用钉钉机器人发起通知

热门文章

最新文章