【AI大模型】:结合wxauto实现智能微信聊天机器人

【AI大模型】:结合wxauto实现智能微信聊天机器人

文章目录

在这里插入图片描述

🧐一、wxauto简介

wxauto 是一个基于 UIAutomation 的开源 Python 微信自动化库。Python 初学者也可以简单上手自动化微信操作。目前已实现很多日常的微信操作的自动化,如自动发送消息、自动添加好友、自动回复、自动获取聊天记录、图片、文件等功能,后续还会根据反馈更新更多功能。

wxauto的github链接https://github.com/cluic/wxauto【点击跳转】

🎯二、wxauto的主要功能

  • 消息发送:支持发送文字、图片、文件、@群好友、引用消息等功能
  • 聊天记录:可获取好友的聊天记录内容
  • 监听消息:实时获取指定监听好友(群)的新消息
  • 其他定制功能:根据需求定制自动化流程,满足各种特殊需求。

📦三、wxauto的安装与使用

1. wxauto的安装

安装 wxauto 非常简单,和其他第三方库一样在命令行输入以下命令即可:

pip install wxauto
pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple
换源安装

注意:目前wxauto只支持 Windows 10|11|Server2016+ 系统,苹果等电脑的系统并不支持,Python环境要求 Python:3.7+(不支持3.7.6和3.8.1)注意!!!Python版本不支持3.7.6和3.8.1微信版本默认分支为微信3.9.11.17版本,使用前请先检查自己电脑微信是否为该版本,版本不同可能由于UI问题导致某些功能无法正常调用。

注意:如果你的微信版本可以用的话,也不需要过多纠结这个。

2. wxauto的简单使用

注意:在运行代码前一定要确保PC微信客户端已经登陆。
【示例1】:基于wxauto发送消息
使用场景:可以重复发送一样的内容达到消息轰炸

from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手'for i inrange(15): wx.SendMsg(msg=content, who=who)
在这里插入图片描述

附带@好友的消息

from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手' name ='文件传输助手' wx.SendMsg(msg=content, who=who, at=name)# 要 @ 的人
在这里插入图片描述

发送图片/视频/文件消息SendFiles
参数说明:

参数名类型默认值说明
filepathstr 或 list/指定文件路径,单个文件str,多个文件list
whostrNone要发送给谁,默认则发送给当前打开的页面
from wxauto import* wx = WeChat() content ='hello world' who ='文件传输助手'file=[r'D:\软件\图片\荒.png',r'D:\C语言学习资料\高质量的C-C++编程.pdf'] wx.SendFiles(filepath=file, who=who)
在这里插入图片描述

聊天窗口消息获取

默认为当前聊天窗口

from wxauto import* wx = WeChat()# 获取当前聊天窗口消息 msgs = wx.GetAllMessage()# 输出消息内容for msg in msgs:if msg.type=='sys':print(f'【系统消息】{msg.content}')elif msg.type=='friend': sender = msg.sender_remark # 获取备注名print(f'{sender.rjust(20)}:{msg.content}')elif msg.type=='self':print(f'{msg.sender.ljust(20)}:{msg.content}')elif msg.type=='time':print(f'\n【时间消息】{msg.time}')elif msg.type=='recall':print(f'【撤回消息】{msg.content}')
在这里插入图片描述


另外LoadMoreMessage方法用于加载更多历史消息,配合GetAllMessage方法使用,实现获取更多历史消息。
注意:LoadMoreMessage方法加载更多历史消息时,需要保证当前聊天窗口有历史消息,否则没有效果,即触发一次“查看更多消息”。

from wxauto import WeChat wx = WeChat()# 加载更多历史消息 wx.LoadMoreMessage()# 获取当前聊天窗口消息 msgs = wx.GetAllMessage()# 消息处理逻辑代码。。。

微信添加好友
AddNewFriend方法用于发起好友申请。
注意:微信有一定的限制,如果频繁添加好友,可能会被限制添加好友的权限,请谨慎使用,切勿滥用!!!

from wxauto import* wx = WeChat() keywords ='s15576806087'# 对方的微信号、手机号、QQ号 addmsg ='你好,我是xxxx'# 添加好友的消息 remark ='备注名字'# 备注名,没有则不用设置 tags =['朋友','同事']# 标签列表# 发起好友申请 wx.AddNewFriend(keywords, addmsg=addmsg, remark=remark, tags=tags)
在这里插入图片描述

获取好友信息

from wxauto import WeChat wx = WeChat() friend_infos = wx.GetAllFriends()# 获取好友信息print(friend_infos)
3. wxauto的消息对象

这个很重要,下面结合大模型时会用到以下的消息对象。
好友消息

在这里插入图片描述


支持属性

属性名类型说明
typestr消息类型,固定为friend
contentstr消息内容
senderstr发送者
sender_remarkstr发送者备注名
infolist原始消息信息,包含了消息的所有信息
controluiautomation.Control该消息的uiautomation控件
idstr消息id
msgs = wx.GetAllMessage()for msg in msgs:if msg.type=='friend':# 消息类型 sender = msg.sender_remark # 获取备注名print(f'{sender}:{msg.content}')
在这里插入图片描述

自己的消息

在这里插入图片描述


支持属性

属性名类型说明
typestr消息类型,固定为self
contentstr消息内容
senderstr发送者
sender_remarkstr发送者备注名
infolist原始消息信息,包含了消息的所有信息
controluiautomation.Control该消息的uiautomation控件
idstr消息id
msgs = wx.GetAllMessage()for msg in msgs:if msg.type=='self':# 消息类型print(f'{msg.sender}:{msg.content}')
在这里插入图片描述

💻四、wxauto结合大模型实现简单的聊天机器人

这里选用的是百度的千帆大模型,首先登陆进去之后点击模型广场,随便选一个免费的就行。

在这里插入图片描述


选择好模型之后,点进去,点击那个开通付费【免费的,不要钱,放心点击】,提交订单就开通成功啦。

在这里插入图片描述
在这里插入图片描述


返回到主页,点击应用接入,记住这里的API KeySecret Key,点击创建应用。

在这里插入图片描述


填写好应用名称和应用描述(随便填一下就好了),点击确定。

在这里插入图片描述


返回主页,点击模型广场,点击你之前选择的模型,点击API文档。

在这里插入图片描述


往下翻找到对应的请求示例的Python代码,复制那段代码。

在这里插入图片描述


复制好代码后,将你对应的API KeySecret Key给添加上去。

在这里插入图片描述


运行一下代码可以看到,result就是大模型根据我们的问题给出的结果,现在我们只需要将content改成微信中好友发送过来的消息作为问题给大模型,然后将大模型给出的结果中的result提取出来作为内容发送给好友,这样,一个简单的微信聊天机器人就完成了。

在这里插入图片描述

🎧五、完整代码

import requests import json from wxauto import WeChat defget_access_token():""" 使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key """ url ="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]" payload = json.dumps("") headers ={'Content-Type':'application/json','Accept':'application/json'} response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")defmain(wx1, msg1): url ="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token="+ get_access_token() payload = json.dumps({"messages":[{"role":"user","content": msg1 }]}) headers ={'Content-Type':'application/json'} response = requests.request("POST", url, headers=headers, data=payload) json_result = json.loads(response.text)print(json_result)# print(response.text) wx.SendMsg(msg=json_result['result']+"--此内容为AI生成", who="你要发送的人")if __name__ =='__main__': wx = WeChat()whileTrue: msgs = wx.GetAllMessage()if msgs:if msgs[-1].type=="friend": main(wx, msgs[-1].content)
在这里插入图片描述

Read more

使用 Angular 构建 Java 桌面应用

使用 Angular 构建 Java 桌面应用

本文介绍如何构建一个跨平台的 Java 桌面应用,在原生 Swing 窗口中集成现代化的 Angular Web 界面。 前置条件 要完成本教程,您需要: * Git * Java 17 或更高版本 * Node.js 22.0+ * npm 9+ * 有效的 JxBrowser 许可证(评估版或商业版)。有关许可证的更多信息,请参阅许可指南。 项目设置 本教程示例应用程序的代码与其他示例一起,存储在一个基于 Gradle 的 GitHub 仓库中。 如果您想构建一个基于 Maven 的项目,请参考 Maven 配置指南。如果您希望从头开始构建一个基于 Gradle 的项目,请参考 Gradle 配置指南。 获取代码 要获取代码,请执行以下命令:

从零开始:学生与教育工作者如何免费解锁GitHub Copilot的全套能力

学生与教育工作者如何零成本解锁GitHub Copilot的完整指南 1. 教育认证:开启免费Copilot之旅的关键步骤 对于在校学生和教师而言,GitHub提供了一条专属的绿色通道。通过教育认证,你可以完全免费获得Copilot的专业级代码辅助功能,无需经历60天试用期的繁琐流程。这个认证过程虽然需要一些耐心,但绝对值得投入时间。 教育认证的核心在于验证你的学术身份真实性。GitHub会要求你提供以下材料之一: * 学生身份验证:有效的学生证、在学证明或学信网认证报告 * 教师身份验证:教师资格证、工作证或学校官方邮箱 重要提示:使用学校邮箱(.edu或学校专属域名)能大幅提升认证通过率。如果材料非英文,建议附上简单翻译说明。 认证流程中的常见陷阱包括: 1. 上传的证件照片模糊不清 2. 证件有效期信息缺失 3. 使用非官方邮箱提交申请 4. 网络IP地址与学校地理位置不符 我曾帮助三位同学完成认证,发现下午3-5点(美国西部时间)提交的申请通常能在24小时内获得回复,这可能与GitHub审核团队的工作时段有关。 2. PyCharm环境下的Co

FPGA模块如何助力现代工厂实现高速数据采集和实时处理

1. 工业 4.0 背景下的数据挑战 在智能制造的浪潮下,现代工厂正加速从“自动化”向“智能化”迈进。随着传感器部署密度的迅速上升,工厂内部产生的数据量呈几何级增长,涵盖结构化数据(如温度、湿度、压力)与非结构化数据(如图像、视频、音频)等多种类型,对数据采集与处理能力提出了前所未有的挑战: * 实时性要求高:在高速生产线、精密制造与运动控制等场景中,关键数据必须被及时采集与处理,以确保生产过程的高效运行与安全性。这不仅要求系统具备高速采集能力,更要求具备每秒处理百万乃至千万数据点的能力。 * 传输与处理带宽受限:庞大的原始数据若未经处理直接上传至数据中心或云端,将对网络带宽造成巨大负担,且传输延迟难以控制,极易影响系统响应速度和可靠性。 * 多协议兼容的复杂性:现代工厂常用的工业以太网、CAN、Profibus 等通信协议并存,系统需兼容上百种协议并实现无缝对接,大大增加了系统集成的复杂性。 2. FPGA 技术的核心优势 传统处理器架构逐渐难以胜任智能制造的核心需求。FPGA(现场可编程门阵列)凭借其强大的并行处理能力、毫秒级低延迟响应以及灵活可重构的架构,

基于FPGA的TDC延迟链优化与码密度校准方法

1. TDC延迟链的基本原理与挑战 时间数字转换器(TDC)的核心任务是将时间间隔转换为数字量,就像秒表记录运动员成绩一样。但在高精度测量领域,我们需要达到皮秒(ps)级的分辨率,这相当于把一秒分成一万亿份!FPGA内部的进位链(Carry Chain)资源天然适合实现这种高精度测量,因为它具有极快的信号传播速度。 延迟链的基本原理很简单:信号从链的起点开始传播,每经过一级延迟单元就会产生固定的时间延迟。当另一个参考信号(如停止信号)到达时,我们通过检查链上每个单元的状态,就能知道信号传播了多少级,从而计算出时间间隔。这就像观察一排多米诺骨牌倒到第几块了一样。 但在实际应用中,我们会遇到一个棘手的问题:零宽度延迟单元。这些单元由于制造工艺偏差,几乎不产生任何延迟。它们的存在会破坏温度计码的连续性,导致测量结果出现非线性误差。想象一下,如果多米诺骨牌中混进了几块不会倒的牌子,我们就无法准确判断骨牌倒到哪了。 2. 码密度测试:诊断延迟链的健康状况 码密度测试是校准TDC的基础,它的原理类似于统计学中的蒙特卡洛方法。我们让Start信号和Strobe信号使用两个不同频率且不相干