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

闲着没事总想搞点事情,这不是web版的微信有专门的实时收发消息api,可以用Python直接调用,但是现在基本上登录不了web版微信,所以就用不了了。

但这不是还有windows版的微信吗,于是在基于前辈写好的第三方库,今天我们来实现一下实时收发信息,实现自动聊天机器人。

效果展示

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

微信实时收发消息

1、第三方库

基于第三方pc-wechat-hook-http-api实现微信实时收发消息。

需要注意的是,此库基于3.6.0.18版本微信。下载对应版本微信后,直接覆盖安装,这样可以保留聊天记录。

2、开启注入dll

想要实时获取微信消息,需要劫持响应的入口。这一部分内容我们无需过多关心技术细节,只需傻瓜式点击一下即可。

从pc-wechat-hook-http-api官方地址下载到如下三个文件。
Python基于PC版微信实现机器人

 

 

将HPSocket4C.dll文件复制到微信目录下(例如E:TencentWeChat[3.6.0.18])

点击Daen注入器.exe文件:
Python基于PC版微信实现机器人

 

 

其中:

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__)
# Python学习交流源码获取群:279199867
 
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,实现自动对话。需要注意的是,青云客的机器人是女性,且名称为菲菲,如果想自定义名称,我们直接将回复的文本中的菲菲替换成自定义的名称即可,实现代码如下:

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

 

给大家推荐一套2022最新的爬虫教程,涵盖大部分常见案例,非常实用!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基于PC版微信实现机器人 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 趁这个软件还没倒闭,我连夜用Python下载了所有壁纸…

    最近啊,有些人总是喜欢乱点一些七七八八的网站,没错,就是那个巳月,点完了又喊我爬,自己不爬! 就是这些,眼熟吗,反正我一个不认识!!一开始我是严词拒绝的!我是那样的人吗?要不是他请我喝奶茶让我来,我才不瞎搞呢!     软件环境 Python 3.8 解释器 Pycharm 编辑器 模块使用 requests 数据请求模块 re 正则 代码展示 代码仅做展示…

    Python开发 2023年4月2日
    00
  • TheFuck—Python写的超实用命令纠正工具

    哈喽兄弟们,我们在学习Python的过程中,有这么一款工具,可以轻松纠正我们写错的命令,简直太好用了~ The Fuck 是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令中的错误,非常强大。此外,用户还可通过写Python代码的方式自定义修复规则。 修复效果如下动图所示: 更多示例如: 自动识别没有权限,在命令前面添加 sudo ➜ apt…

    Python开发 2023年4月2日
    00
  • Python基础之reduce函数

    哈喽大家好,今天说一下reduce函数的使用方法,以及与for循环的对比。 reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中。 reduce函数先从列表(或序列)中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完。 # 很…

    Python开发 2023年4月2日
    00
  • 重温Python基础——用户输入和while循环

    哈喽兄弟们,本节咱们来复习一下用户输入和while循环。 函数input()的工作原理 函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其赋值给一个变量,以方便继续使用。例如我们尝试让用户输入一些东西 a = input(“请输入一个数”) print(a) 运行结果 请输入一个数   这时我们就可以根据要求输入数值函数…

    Python开发 2023年4月2日
    00
  • Python输出指定时间间隔内的日期

    兄弟们,今天我们来试试用Python输出指定时间间隔内的日期~ 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 使用的模块 import platform import datetime # 我还给大家准备了这些资料:2022最新Python视频教程、Python电子书10个G(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题…

    Python开发 2023年4月2日
    00
  • 重温Python基础——数

    哈喽,兄弟们,本文带大家来复习一下Python基础中的数。 在编程中,经常会使用到数。在一些计算题中,或者其他的可视化数据等。Python能够根据不同用法处理它们 1、整数 在Python中可对整数执行加减乘除运算(+ – * /),使用两个乘号表示乘方(**) a=3 b=4 print(a+b) print(a-b) print(a*b) print(a…

    Python开发 2023年4月2日
    00
  • Python批量爬取美女写真集,只需27行代码,实现多页爬取!

    兄弟们,上一个系列大家多少有点不太喜欢,那今天上点不一样的。     来吧,直接整活~ 先准备一下 首先咱们需要安装一下这两个第三方模块 requests >>> # pip install requests parsel >>> # pip install parsel 不会安装的小伙伴,键盘按住win+r 在弹出来的运…

    2023年4月2日
    00
  • 程序员最浪漫的表白方式,将情书写在她的照片里,Python简直太厉害啦~

    这不光棍节快到了,表弟准备写一封情书给他的女神,想在光棍节之前脱单。 为了提高成功率,于是跑来找我给他参谋参谋,本来我是不想理他的,不过谁让他是我表弟呢(请我洗jio),于是教给他程序员的终极浪漫绝招,先假装给女神拍照,然后再把情书写到她的照片上打印出来送给她,嘿嘿~ 实现步骤 想要实现把情书写在像素中,那么我们就需要用到pillow这个神器。 众所周知,图…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部