资讯详情

资讯详情

建站行业动态 · 设计趋势 · 数字化升级干货

wxauto 微信自动化指南:300 人社群的值班,我是怎么放心交给 Python 的

wxauto 微信自动化指南:300 人社群的值班,我是怎么放心交给 Python 的 wxauto 微信自动化指南300 人社群的值班我是怎么放心交给 Python 的【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto周六早上九点群主小林打开微信通知栏上的数字是 148。前四十条里明天活动几点开始怎么报名这两个问题被问了十几次。他一边往下翻一边打字回复等全部处理完已经过去一个半小时。更头疼的是漏消息——有人在群里 了他三遍没等到回应转头去朋友圈发了一条吐槽。后来他认识了一个叫 wxauto 的开源工具。这是一个基于 Windows UI Automation 技术的微信自动化库专为普通微信客户端不是网页版设计官方定位就是可实现简单的发送、接收微信消息简单微信机器人。这一篇文章就把我们用它搭起一套群值班机器人的完整过程写下来包括那些文档里不会明说的坑。先弄清楚wxauto 是什么以及它不是什么很多人一听自动化下意识觉得是黑客技术。wxauto 恰恰相反——它不碰微信的通讯协议不注入内存不读取加密数据库。它的原理特别笨也特别安全模拟人。通过 Windows 自带的 UI Automation 技术程序像一个人那样看到微信窗口里的聊天列表、输入框、消息气泡然后模拟点击、输入、回车。打个比方它不是一个会念咒语的法师而是一个坐在你电脑前、替你握鼠标键盘的机器人助理。你眼睛能看到什么它就能看到什么你能手动做的事它就能照着做一遍只是做得更快、更不知疲倦。作为微信自动化工具它的环境要求也很直白环境要求操作系统Windows 10 / 11 / Server 2016 及以上微信版本3.9.XPython3.9 及以上安装一行命令就行pip install wxauto想自己改源码的话也可以克隆仓库后以开发模式安装git clone https://gitcode.com/gh_mirrors/wx/wxauto cd wxauto pip install -e .装好之后先确认微信已经在电脑上登录、窗口保持打开然后跑一个最基础的测试。第一件小事让微信学会开口说话wxauto 的核心入口是一个WeChat类。创建实例后用 wxauto 发送微信消息只需要一个方法from wxauto import WeChat wx WeChat() # 连接当前已登录的微信 wx.SendMsg(wxauto 值班机器人已上线, who文件传输助手)这段代码做什么第一行拿到当前登录微信的控制权第二行向文件传输助手发一条消息。who参数指定发给谁可以是好友、群聊或公众号。发出去之后再把消息读回来验证一下msgs wx.GetAllMessage() # 取当前聊天窗口里的消息 for msg in msgs[-3:]: print(f{msg.sender}: {msg.content} | 类型 {msg.type})GetAllMessage()返回一个消息对象列表每个对象至少带三个属性sender谁发的、content内容、type消息类型。打印最后三条你就能确认发出去→读回来这条链路是通的。到这一步最小闭环就成立了。但只会说不会听离机器人还差得远。真正的转折出现在下一个方法上。让微信学会竖起耳朵wxauto 监听微信消息的关键小林的第一个需求是自动回复。要自动回复前提是微信得知道来消息了。wxauto 提供了一套监听机制AddListenChat它会把某个聊天窗口独立出来相当于在后台开了一个专属频道一旦有新消息就回调你写好的函数from wxauto import WeChat from wxauto.msgs import FriendMessage wx WeChat() def on_message(msg, chat): print(f收到来自 {chat} 的消息: {msg.content}) if isinstance(msg, FriendMessage): msg.quote(收到已记录 ✅) wx.AddListenChat(nickname活动通知群, callbackon_message) wx.KeepRunning() # 保持程序不退出这里有三个关键点每一个都是踩坑换来的第一回调函数on_message会收到两个参数msg消息对象和chat聊天窗口对象。isinstance(msg, FriendMessage)用来判断是不是好友或群友发的消息避免把系统通知、时间戳也当成待办来处理。第二msg.quote(收到)是引用回复——它会引用那条消息再回复让对方一眼知道你在回应哪一句。这在群里特别有用相当于自动回复也有了上下文。第三也是最重要的必须调用KeepRunning()。wxauto 的消息监听跑在守护线程里主线程跑完程序就直接退出了你加再多监听也没用。这一行代码就是让程序站着别走一直等消息。我第一次跑的时候没写脚本三秒就静悄悄地结束一度以为是安装出了问题。至此听到消息这件事解决了。接下来有个小意外彻底刷新了我对它的认知。意外收获消息远不止文字原本我以为这类工具能读读文本、发发消息就不错了。直到我翻了项目文档里 Message 类的说明才发现它把微信里的消息类型几乎都建模了文本、引用、图片、视频、语音、文件、位置、链接、名片、合并转发、笔记……而且每种消息类型都是独立的 Python 类自带专属方法。举个例子把聊天里的图片、视频、文件自动保存到本地def on_message(msg, chat): if msg.type in (image, video, file): path msg.download() # 下载到默认保存目录 print(已保存:, path)收到语音时还能直接转成文字if msg.type voice: text msg.to_text() print(语音内容:, text)想转发一条消息msg.forward(张三)一行搞定想在群里 某人发通知msg.at(通知内容)也能用连合并转发最近五条消息这种要手动一步步操作的功能都有现成方法。用消息对象的type属性做分发就像给消息贴了一张分类标签处理逻辑立刻清晰起来。这些能力拼在一起才让值班机器人有了血肉。把零碎能力拼成一套值班系统有了上面这些零件我们把它们组装起来。小林的场景很典型活动通知群加私聊咨询要用 wxauto 自动回复微信消息里的常见问题同时把重要内容存档。from wxauto import WeChat from wxauto.msgs import FriendMessage from datetime import datetime wx WeChat() REPLIES { 活动几点开始: 上午 10 点准时开始建议提前 15 分钟到场, 怎么报名: 直接回复“报名姓名”即可我会帮你登记。, 地址: 地点在 xxx 路 88 号导航搜“xxx中心”就能到。, } def on_message(msg, chat): if not isinstance(msg, FriendMessage): return # 忽略系统消息 text msg.content # 1. 关键词自动回复匹配到就引用回复 for keyword, reply in REPLIES.items(): if keyword in text: msg.quote(reply) break # 2. 关键内容归档到本地文件 with open(值班记录.txt, a, encodingutf-8) as f: f.write(f[{datetime.now():%H:%M}] {chat} | {msg.sender}: {text}\n) # 同时监听群和私聊 wx.AddListenChat(nickname活动通知群, callbackon_message) wx.AddListenChat(nickname小林, callbackon_message) wx.KeepRunning()这段代码做了三件事第一把自动回复做成一张关键词表以后改话术只改字典不用动逻辑第二用isinstance过滤掉系统消息避免误回复第三把所有对话落盘归档回头做统计、复盘都有据可查。如果不想用回调项目还提供了轮询式的GetAllNewMessage()可以自己写循环、自己控制节奏两种风格任选。相关的类定义都集中在项目的wxauto目录下wxauto.py是主控制类elements.py里是消息和窗口的各种元素docs/class/下有每个类的详细文档想深入可以自己翻。踩过的坑为什么模拟人的操作总会掉链子自动化跑得再顺也要理解它的脆弱性。既然 wxauto 是模拟人那人的缺点它也有常见问题原因应对突然收不到新消息微信窗口被最小化或遮挡UI 元素不可见让微信窗口保持在前台别最小化消息发不出去网络卡顿或客户端短暂无响应加重试逻辑失败后等几秒再试脚本越跑越慢甚至卡死窗口句柄过期、UI 元素失效定时重启脚本或重新创建实例换了微信版本就不灵UI 结构变了坐标和控件对不上锁定 3.9.X 版本别随手升级这就像一个规律凡是模拟人操作的工具稳定性上限取决于操作环境是否一成不变。所以别把重要流程跑在无人值守的服务器上微信这种桌面软件规规矩矩地在一台开着屏幕的电脑上跑反而是最稳妥的。写在最后自动化解放的不是工作是注意力小林后来算了笔账以前每天光重复回复和转发就要花掉两三个小时现在机器人把八成左右的重复劳动接走了他只处理那些机器人搞不定的复杂问题。更重要的是他不再提心吊胆地怕漏消息——漏掉的每一句值班记录文件里都躺得好好的。这件事给我的启发是自动化的意义不在于让代码替代人而在于把人的注意力从低价值的重复里赎回来还给人去处理那些真正需要判断力的事情。wxauto 只是把鼠标键盘这个层面的动作交给了程序而判断、策略、尺度始终在你手里。如果你想立刻开始给你两个最小行动装好 wxauto跑通发送一条消息 读取一条消息的最小闭环给文件传输助手加一个监听回调让它自动回复一句收到。从最不起眼的场景动手再一点点往你的真实工作里长。用不了一下午你就会开始琢磨还有什么是我可以放心交给它的【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关资讯