
微信里的重复劳动如何用一个开源工具一键终结wxauto 自动收发消息实战手册【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto如果你每天的微信消息里有三分之一是在吗多少钱地址发我一下如果你总要把同一条通知复制粘贴到八个群里如果你下班后还要逐条翻聊天记录做存档……那你大概率已经和大多数人一样被微信耗掉了一整块工作时间。今天要分享的wxauto是一款基于 Windows UI 自动化技术的微信客户端非网页版自动化工具主打简单发送、接收微信消息一句话说就是让你的 PC 版微信像装了遥控器一样用 Python 脚本就能指挥它收发消息、处理好友申请、定时汇报。它不碰微信数据库、不注入进程靠的是老老实实模拟人操作界面安全门槛低上手也快。下面我换个讲法不给你画三步走大饼而是直接把你领到我那个已经跑了一个月的全能助手面前拆开它、看懂它、再把它搬回你自己的电脑上。一、先看成品一个晚上写出来的微信值班机器人先上个最终效果让你心里有个底。下面这段脚本是我给一位做电商运营的朋友写的微信值班机器人它的日常是半夜自动回复发货咨询、把带投诉/售后关键词的消息转给主管、顺手归档当天所有会话。from wxauto import WeChat import time # 初始化微信实例要求微信已登录且窗口处于打开状态 wx WeChat() # 关键词自动回复表客户常问什么答案就在这里 keyword_map { 发货: 亲下单后24小时内发货偏远地区48小时内哦, 地址: 仓库地址浙江省义乌市XX街道X号退货请附纸条写上订单号, 售后: 售后问题已记录客服会在上班后第一时间联系您请放心, } def safe_reply(who, text): 带重试的发送避免偶发失败直接崩掉整晚 for i in range(3): try: wx.SendMsg(text, whowho) return True except Exception as e: print(f[{i1}] 发送失败: {e}) time.sleep(2) return False print(值班机器人上线开始巡检新消息……) while True: try: # 一次拉取所有聊天窗口的未读新消息 new_msgs wx.GetAllNewMessage() for chat_name, msg_list in new_msgs.items(): for msg in msg_list: # 只关心好友发来的文本消息自己发的和系统消息跳过 if getattr(msg, attr, ) ! friend: continue print(f收到 [{chat_name}] {msg.sender}: {msg.content}) # 关键词命中就自动回复 for keyword, reply in keyword_map.items(): if keyword in msg.content: safe_reply(chat_name, reply) break # 售后关键词同时转发给主管 if 投诉 in msg.content or 售后 in msg.content: safe_reply(主管-李总, f【转】{chat_name} 发来: {msg.content}) time.sleep(3) # 每 3 秒巡检一轮别把自己整太累 except Exception as e: print(巡检异常5秒后重试, e) time.sleep(5)运行之后这家伙就守在微信旁边了常见问题自动答、重要消息自动转、全程无需人盯着。下面我把组成它的每一块零件单独拆给你看。二、先把地基打牢运行 wxauto 前你要确认的 4 件事这一节是给第一次接触的人看的清单老手可以直接跳过。核心就四件事缺一件都会翻车。检查项要求说明操作系统Windows 10 / 11 / Server 2016wxauto 依赖 Windows UI 自动化框架微信版本3.9.X 系列请用安装版 PC 微信不要用 4.0 新版也不要登录网页版Python3.9 及以上建议直接装 Anaconda 或官方最新稳定版登录状态微信已扫码登录且窗口打开窗口被最小化/遮挡脚本会看不见消息安装本身没有坑一行命令搞定pip install wxauto想跟进最新代码也可以把仓库 clone 到本地再以可编辑模式安装git clone https://gitcode.com/gh_mirrors/wx/wxauto cd wxauto pip install -e .安装完先跑个 10 秒冒烟测试确认指挥链路是通的from wxauto import WeChat wx WeChat() # 初始化会找到已登录的微信窗口 wx.SendMsg(wxauto 连接成功, who文件传输助手) # 给自己发一条 msgs wx.GetAllMessage() # 读当前窗口已加载的消息 for m in msgs[-3:]: print(f{m.sender}: {m.content})如果控制台打出初始化成功获取到已登录窗口你的昵称并且文件传输助手收到消息恭喜遥控器已经握在手里了。三、读懂核心三件套发消息、读消息、切窗口wxauto 的绝大多数玩法都由下面三个动作组合出来。先理解这三个后面所有花活都水到渠成。3.1 发消息SendMsg 一个方法搞定文本与 wx.SendMsg(今晚八点开周会, who项目群) # 发普通文本 wx.SendMsg(请查收方案, who张三, at[李四]) # 带上 支持单人或列表 wx.SendMsg(大家好\n{张三} 请看附件, who项目群) # 换行与 一起用参数里的who最好用完整备注名匹配最稳at参数可以传字符串也可以传一个名字列表。3.2 读消息GetAllMessage 与 GetAllNewMessage 的差别GetAllMessage()拿的是当前聊天窗口里已加载的全部消息适合做历史归档GetAllNewMessage()是全窗口巡检未读新消息返回一个字典键是聊天对象名值是该窗口的新消息列表适合做实时监听。new_msgs wx.GetAllNewMessage() for chat_name, msg_list in new_msgs.items(): for msg in msg_list: print(f[{chat_name}] {msg.sender}: {msg.content} (类型:{msg.type}))3.3 切窗口ChatWith 让脚本自己翻聊天记录发送时其实SendMsg内部已经帮你切了窗口但你想先切过去、再逐条读消息时就可以显式调用wx.ChatWith(张三) # 打开张三的聊天窗口 msgs wx.GetAllMessage() # 现在读到的就是张三窗口的内容 wx.LoadMoreMessage() # 向上滚动加载更多历史方便深挖聊天记录3.4 判断消息是谁发的attr 与 type 双属性从GetAllNewMessage()拿到的每条消息对象都自带两个关键属性看懂它们你的机器人就分得清轻重属性取值含义msg.attrfriend / self / system / time / tickle / other消息来源好友发的、自己发的、还是系统提示msg.typetext / image / voice / file / link / emotion / merge ……消息内容文本、图片、语音、文件、链接……一个最常见的过滤写法for msg in msg_list: if msg.attr ! friend: # 不是好友发来的就跳过 continue if msg.type text: # 只处理文本 print(msg.content)四、让脚本听得懂人话自动回复机器人的三种打开方式了解了三件套下面给你三种从易到难的自动回复方案选一个合胃口的直接用。方案 A关键词命中式最简单零依赖就是我文章开头那套一个for循环扫关键词命中就回答案。适合标准话术密集的场景比如电商客服、招生咨询。方案 B消息监听式更省资源只盯几个人不想全局轮询、只想盯着某几个重要联系人可以用AddListenChatGetListenMessage组合from wxauto import WeChat import time wx WeChat() # 只监听这几个对象支持群聊还能顺手把图片/文件/语音一起保存 wx.AddListenChat(who重要客户A, savepicTrue, savefileTrue, savevoiceTrue) wx.AddListenChat(who老板) while True: msgs wx.GetListenMessage() # 只返回监听对象的新消息 for chat, msg_list in msgs.items(): for msg in msg_list: print(f监听 [{chat}] {msg.sender}: {msg.content}) time.sleep(2)savepicTrue这类参数的意思是对方发来的图片、文件、语音会自动下载到本地写归档脚本时特别省事。方案 C防重复轰炸式进阶必备护身符微信机器人最容易翻车的地方不是不会发而是把同一条消息回好几遍。比如对方连发三条在吗你的关键词命中三次回三次同样的话观感极差。加一个简单的消息指纹去重即可seen {} # 指纹 - 时间戳 def should_reply(msg): 60秒内同一来源同一内容不重复回复 key f{msg.sender}_{msg.content} now time.time() if key in seen and now - seen[key] 60: return False seen[key] now return True把should_reply(msg)插进回复前的判断里机器人立刻懂事不少。五、再进阶一步好友申请、文件发送与日常汇报自动回复只是开胃菜wxauto 能碰的远不止聊天框。5.1 自动处理好友申请加人带备注还带标签做社群运营的应该会爱死这个功能——新好友申请来了自动通过、自动打备注、自动贴标签wx WeChat() # 拉取可接受的新好友申请列表 new_friends wx.GetNewFriends() for friend in new_friends: remark f社群-{friend.name} friend.Accept(remarkremark, tags[微信社群, 2026春季]) # 接受并设置备注与标签 print(f已通过: {friend.name})对应的主动加人也有现成方法按微信号/手机号搜索并发送申请还能附带申请语和备注wx.AddNewFriend( keywords13800000000, addmsg你好我是XX公众号的读者来交流一下, remark读者-小王, tags[读者], )5.2 群发文件与 全员通知场景一把梭每天要给多个群发同一份表格SendFiles支持传路径或路径列表wx.SendFiles([D:/报表/日报.xlsx, D:/报表/附件.pdf], who项目群)要给大群发个 所有人 的通知一个AtAll就够wx.AtAll(msg明天上午10点大会议室培训请准时到场, who公司全员群)5.3 把聊天记录导出成文本归档不再靠复制粘贴配合前文的GetAllMessage5 行代码就能把当天记录落盘from datetime import datetime wx.ChatWith(客户群) msgs wx.GetAllMessage() lines [f[{datetime.now():%H:%M:%S}] {m.sender}: {m.content} for m in msgs] with open(chat_backup.txt, a, encodingutf-8) as f: f.write(\n.join(lines) \n) print(f已归档 {len(lines)} 条消息)想再进一步把输出换成 Excel/CSV 也就是改几行的事交给pandas即可。六、避坑指南我踩过的 5 个坑提前替你排掉脚本跑起来容易跑得稳才是本事。这 5 个问题是我和朋友们实战中真实撞过的统一按现象 → 原因 → 解决办法列给你现象WeChat()初始化直接报错或找不到窗口原因微信没登录或窗口被最小化到托盘脚本找不到WeChatMainWndForPC主窗口解决办法确认微信已登录且主窗口处于打开状态初始化时脚本会自动把窗口置前不用手动点现象消息发不出去卡在发送超时原因网络波动、微信卡顿或输入框焦点没抢到解决办法参考第一节的safe_reply做 3 次重试 2 秒间隔消息别太长超长文本建议分段现象明明有新消息GetAllNewMessage()却返回空原因微信窗口被其他程序遮挡UI 树刷新不及时解决办法保证微信窗口不被完全覆盖脚本里定期调用wx._refresh()刷新界面后再轮询现象脚本跑几小时后变痴呆消息反应越来越慢原因长时间运行后 UI 元素句柄失效或内存缓慢增长解决办法定时重启脚本可用系统任务计划程序每小时重启一次或用threading起守护线程做看门狗现象ChatWith(张三)总是跳到奇怪的人原因who传的是昵称而非备注或存在重名解决办法尽量用备注名精确匹配微信里给重要联系人设好唯一备注再让脚本去找人七、让机器人按点上班定时任务与性能优化心得7.1 定时汇报最简单的做法其实是任务计划不用额外装schedule库直接用 Windows 自带的任务计划程序最稳每天 9:00 跑一次早安问候脚本18:00 跑一次日报提醒脚本每个脚本独立、挂了互不影响比塞进一个常驻进程更省心。7.2 长驻进程的性能三原则优化点做法收益减少轮询频率sleep拉长到 3~5 秒别 0.5 秒死循环降低 CPU 占用UI 响应更快用监听代替全局扫描只盯几个对象用AddListenChat别每轮GetAllNewMessage大幅减少界面切换次数消息去重缓存维护已处理消息指纹集合命中就跳过避免重复回复、重复归档八、去哪里看更多玩法这篇只是把你领进门wxauto 的能力边界远不止于此——它还支持获取好友详情、读取群成员列表、朋友圈操作、合并转发、多个微信窗口切换等。想深入研究的直接翻项目自带的文档与源码完整示例与进阶用法docs/example.mdWeChat 类全部方法说明含参数表docs/class/WeChat.md消息类型体系attr/type 全解docs/class/Message.md源码主入口想读源码的从这里开始wxauto/wxauto.py九、最后给你一份动手清单不需要一次吃成胖子按下面这个顺序来每完成一项你都能立刻感到轻松了一点装好 wxauto跑通冒烟测试给自己发条消息写一个只含 2~3 个关键词的自动回复脚本挂一个晚上试试给你的回复加60 秒去重观察一整天稳定性把某类消息转发给同事/主管群替代手动复制加上好友申请自动处理社群运营从此不熬夜把常用功能按时间拆分到系统任务计划让它到点上班顺带提一个开放性问题欢迎你在评论区聊聊你最想自动化的微信场景是什么是客服话术、社群运营还是家人群里的收到请回复说不定你的需求正好是 wxauto 下一个版本该加的功能。最后提醒一句自动化工具是把双刃剑务必在微信使用规范允许的范围内使用别拿它做骚扰或营销轰炸也别用于任何非法用途——技术是为省力服务的不是用来制造麻烦的。祝你早日把重复劳动甩给脚本把时间留给真正重要的人和事。【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考