尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

wxauto微信自动化终极上手:从环境搭建到写出一个能自动回复的机器人

wxauto微信自动化终极上手:从环境搭建到写出一个能自动回复的机器人 wxauto微信自动化终极上手从环境搭建到写出一个能自动回复的机器人【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto如果你有一台 Windows 电脑、装了微信又想让某些重复操作自己跑起来——比如定时群发、自动回复、把聊天记录存下来——那么wxauto大概是目前最省事的 Python 方案。它直接控制Windows 版微信客户端非网页版能收发消息、管理联系人、传输文件足够支撑一个简单微信机器人。这篇文章会带着你从零开始先花几分钟装上环境跑通第一个发送消息的 Demo再一步步理解它背后是怎么工作的最后落地一个真实的自动回复机器人。全程没有复杂的网络协议只有替你操作桌面这一件事。准备三步走wxauto框架安装教程含环境要求wxauto 挑环境先对照下面这张表看看自己是否满足依赖项要求说明操作系统Windows 10 / 11 / Server 2016底层依赖 Windows 原生自动化接口Linux/macOS 用不了微信客户端3.9.X 版本代码里写明的目标版本为3.9.11.17版本差太远控件会找不到Python3.9 及以上官方声明支持3.8, 3.15安装有两种常见姿势选一个即可# 方式一直接装 PyPI 上的包 pip install wxauto # 方式二从源码开始仓库地址 git clone https://gitcode.com/gh_mirrors/wx/wxauto cd wxauto pip install -e .装的时候 pip 会自动带上几个关键依赖pywin32调 Windows API、pyperclip操作剪贴板、comtypesCOM 接口、pillow、psutil等。这些库就是后面所有自动化操作的手脚。装好之后把微信 PC 客户端登录好、保持在前台运行就能开始写第一行代码了。5 分钟跑通第一个 Demo给文件传输助手发条消息打开任意 Python 文件或直接进交互式终端敲下这段代码from wxauto import WeChat # 初始化微信实例会找到已登录的微信主窗口并解析界面结构 wx WeChat() # 给文件传输助手发一条消息 wx.SendMsg(你好这是 wxauto 的第一次发言, who文件传输助手) # 读取当前聊天窗口的消息 msgs wx.GetAllMessage() for msg in msgs: print(f{msg.sender}: {msg.content})逐行理解一下WeChat()做了两件重要的事找到类名是WeChatMainWndForPC的主窗口然后把窗口划分成导航栏、会话列表、聊天框三个区域并把每个区域里的关键控件搜索框、消息列表、头像等都缓存成属性后续操作都是在这三个区域里点来点去。SendMsg(msg, who...)先自动帮你切换到目标聊天窗口再模拟真实的粘贴回车发送。GetAllMessage()返回的是一个Message对象列表每条消息都有sender发送者和content内容等属性直接遍历就能用。跑完这段微信里文件传输助手应该已经收到消息了控制台也打印出了当前窗口的聊天记录。到这里wxauto 微信自动化的第一公里已经走完比想象中简单得多。进阶第一课聊天记录是怎么被读出来的想写出靠谱的机器人得先知道GetAllMessage()返回的消息长什么样。每个Message对象有两个最核心的属性attr消息的来源属性取值有system系统、time时间、tickle拍一拍、self自己发的、friend好友/群友发的、other。type消息的内容类型取值有text、quote引用、voice、image、video、file、location、link、emotion表情、merge合并转发、personal_card名片、note笔记、other。两者组合起来就覆盖了几乎全部微信消息形态。举例来说判断写法含义msg.attr friend是好友发来的消息msg.type image是图片消息msg.attr friend and msg.type text好友发来的文本消息针对不同类型Message对象还提供了对应的操作能力图片/视频/文件可以msg.download()下载到本地语音可以msg.to_text()转文字链接能msg.get_url()取地址笔记能msg.to_markdown()转成 Markdown 文件。详细的类继承关系和方法清单可以翻看官方文档里的 docs/class/Message.md。它到底是怎么识别消息类型的这是 wxauto 里最巧妙的部分。微信聊天列表里的每一条消息本质上都是界面上的一个控件ListItemControl。wxauto 在_split方法里做了两件事按控件高度分类系统消息高 33 像素、时间消息高 34 像素、撤回消息高 45 像素直接用BoundingRectangle.height()比对就能区分开按头像位置分类拿消息控件的水平中线做参照发送者头像在中线左边就是好友消息在右边就是自己发的消息。至于哪些是新消息靠的是消息 ID 去重——每条消息控件有一个RuntimeIdwxauto 记录上一次见过的 ID 列表和当前列表一对比多出来的就是新消息。这就是GetNextNewMessage()、GetAllNewMessage()的工作原理。写出第一个微信自动回复机器人监听 回调掌握了消息读取就可以动手做一个真正活着的机器人了。官方示例docs/example.md给了完整的骨架核心就三个 API添加监听 → 注册回调 → 保持运行。from wxauto import WeChat from wxauto.msgs import FriendMessage wx WeChat() # 消息处理函数每来一条新消息都会自动调用 def on_message(msg, chat): # 1. 把消息内容追加到本地日志 with open(msgs.txt, a, encodingutf-8) as f: f.write(msg.content \n) # 2. 图片和视频自动存下来 if msg.type in (image, video): print(msg.download()) # 3. 好友消息自动回复收到引用式回复 if isinstance(msg, FriendMessage): msg.quote(收到) # 监听张三的聊天窗口新消息交给 on_message 处理 wx.AddListenChat(nickname张三, callbackon_message) # 阻塞运行保持机器人不退出 wx.KeepRunning()这段代码背后其实藏着一个关键机制监听是开小窗实现的。AddListenChat()会把目标聊天单独弹出一个ChatWnd独立窗口机器人轮询这个窗口里的新消息回调函数on_message接收msg消息对象和chat对应的聊天窗口对象两个参数。不需要的时候wx.RemoveListenChat(nickname张三)就能摘掉监听。到这里微信自动回复机器人怎么写这个问题已经有了标准答案读消息 → 判断类型 → 按规则回复。在此基础上加个关键词匹配、接个 AI 接口就是一个能对外服务的完整机器人了。实战场景扩展文件、群聊、好友申请、自动登录机器人能跑通之后剩下的就是按场景组合 API。这里挑四个高频需求给出现成写法。场景一发送文件支持多个# 单个文件 wx.SendFiles(D:/report.pdf, who张三) # 批量文件 wx.SendFiles([D:/a.pdf, D:/b.docx], who张三)原理上发送文件走的是复制文件列表到剪贴板 → 粘贴 → 回车的路径所以传参必须给绝对路径路径不存在会直接返回失败提示。场景二群内 与打字机模式# 所有人并附带消息 wx.AtAll(本周五下午开会, who项目群) # 打字机模式模拟逐字输入更接近真人 wx.SendTypingText(各位好\n{张三} 请负责前端\n{李四} 请负责后端, who项目群)SendTypingText支持用{昵称}的占位符在群聊里指定 对象配合\n换行能组合出很像真人在打字的效果。场景三处理好友申请newfriends wx.GetNewFriends() for friend in newfriends: friend.accept(remarkf备注_{friend.name}, tags[同学, 技术群])返回的每个好友申请对象都带accept()方法可以一次性设置备注名和标签适合运营账号批量处理好友请求。场景四自动登录与多开from wxauto import LoginWnd, get_wx_clients, get_wx_logins # 指定微信 exe 路径拉起登录窗口 loginwnd LoginWnd(D:/path/to/WeChat.exe) qrcode_path loginwnd.get_qrcode() # 拿到二维码图片路径 loginwnd.login() # 等扫码后完成登录 clients get_wx_clients() # 获取所有已登录的微信客户端 login_windows get_wx_logins() # 获取所有登录窗口这套组合拳意味着机器人可以在机器上自动拉起微信、输出登录二维码等待扫码后自动接管甚至能管理多个微信客户端的登录窗口。创建群聊AddGroupMembersManageGroup、合并转发multi_selectMergeForward等更多能力都在官方文档 docs/example.md 里有完整示例。那些踩过的坑与避坑清单自动化跑得再欢也绕不开桌面应用固有的坑。把这些提前记好能省下大量排错时间坑表现对策微信版本不对控件找不到、报错频繁尽量用 3.9.Xwxauto 代码里写明目标版本3.9.11.17窗口被最小化/遮挡操作偶发失效机器人运行期间保持微信窗口可见最好别手动去抢鼠标手动干预点击位置错乱机器人运行时别同时手点微信两者会打架剪贴板被占用发送内容变成别的wxauto 发送走的是剪贴板粘贴脚本运行期别复制别的东西大批量好友操作运行极慢GetFriendDetails()/GetAllFriends()是逐人扫描的好友多时用n参数限制数量官方也标注未经过大量测试还有两个官方在源码注释里明确提示过的坑GetFriendDetails()遇到已离职状态的企业微信好友可能导致微信卡死需要重启微信客户端本身的 BUGGetAllMessage()返回的消息id在切换 UI 后会变化做去重时建议用hash字段。最后一句忠告与下一步在 README 的最开头作者用加粗的免责声明写得很清楚wxauto 的代码仅用于对 UIAutomation 技术的交流学习使用禁止用于实际生产项目禁止用于非法用途和商业用途。自动化操作本身没有原罪但请把它用在合规、正当的场景里比如个人的消息备份、学习研究、效率工具原型。这也是所有桌面自动化工具都该守住的底线。读完这篇文章你已经走完了认识 → 安装 → Demo → 原理 → 机器人 → 避坑的完整路线。接下来的推荐顺序是把今天的代码跑一遍试着给自己写一个关键词自动回复机器人通读官方文档 docs/class/WeChat.md 和 docs/class/Message.md把WeChat类和各类Message的方法都过一遍挑一个真实小需求比如把指定群的图片自动存档用它练手并逐步扩展。动手是最好的学习方式。打开你的 Windows 电脑把第一个 Demo 跑起来你离拥有自己的微信机器人只差这一步。【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表