微信自动化入门:一份简单易懂的完整上手攻略
【免费下载链接】wxautoWindows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto
每天点开微信,是不是总有做不完的重复动作?把同一句"亲,稍等哦"回复给第 30 个客人、把重要通知一条条复制到三个工作群、对着屏幕一条条翻聊天记录找"上周发的文件"……这些活儿不累脑子,却实实在在吃掉了你的时间。今天要介绍的wxauto,就是专门解决这个问题的开源工具——它能直接接管 Windows 版微信客户端,帮你自动收发消息、搭建简单的微信机器人,把上面这些重复劳动一键打包交给脚本去跑。你只负责写规则,剩下的机械操作,全交给代码。
一位深夜运营的转机
小鹿在一家母婴用品店铺做社群运营,晚上 10 点还得守着手机回消息、发活动通知、整理客户反馈,周末也不例外。直到她看到同事用一段 Python 脚本"指挥"微信自动回复,才知道原来日常操作可以这样解放双手。三天后,她自己也写出了第一版自动回复机器人,从此晚上安心追剧,消息一条没漏。
它凭什么能"操纵"微信
wxauto 的底层是一套叫UI 自动化的技术。说白了,它像一位看不见的"模拟操作员":读取微信窗口里每个控件(输入框、消息列表、按钮)的位置和状态,然后模拟你点鼠标、敲键盘的动作去操作它们。你可以把它想成一台"外挂钢琴手"——乐谱(你的 Python 脚本)写什么,它就照着弹什么,不需要微信提供任何官方接口,也不需要动微信的数据文件。这也决定了它的两个使用前提:微信要真实登录并保持窗口打开,以及脚本运行期间,这台电脑别去抢微信的鼠标。
跑起来前的准备清单
先对照下面这份清单,逐项打勾确认环境:
- 操作系统:Windows 10 / 11 / Server 2016 及以上(wxauto 目前只支持 Windows 版微信)
- 微信版本:3.9.X 系列客户端,且已经扫码登录
- Python:3.9 及以上版本,装好后在命令行输入
python --version能看到版本号 - 安装 wxauto:命令行执行
pip install wxauto - 或从源码安装:
git clone https://gitcode.com/gh_mirrors/wx/wxauto后进入目录执行pip install -e .
最常见卡点速查:
| 卡点症状 | 快速解决办法 |
|---|---|
| 初始化就报错 | 确认微信已登录且主窗口没有被完全最小化 |
| 找不到目标聊天窗口 | 调用wx._refresh()刷新一次界面控件树 |
| 消息一直获取为空 | 微信窗口被遮挡/最小化,保持它可见再试 |
第一个能跑的示例
装好依赖、确认微信在登录状态后,新建一个hello.py,把下面这段代码原样粘进去:
from wxauto import WeChat import time # 1. 连接当前已登录的微信窗口 wx = WeChat() # 2. 给"文件传输助手"发一条测试消息 wx.SendMsg("wxauto 已上线,正在自动运行 ✅", who="文件传输助手") # 3. 打开刚才的聊天,把最新的几条消息读出来 wx.ChatWith("文件传输助手") msgs = wx.GetAllMessage() for msg in msgs[-3:]: print(f"{msg.sender}: {msg.content}") print("基础收发测试完成")运行python hello.py,预期你会看到:终端打印出"初始化成功,获取到已登录窗口:你的微信昵称",文件传输助手收到那条测试消息,控制台随后输出最近 3 条聊天内容。看到这些,恭喜你——第一条自动化链路已经跑通。
进阶能力拆解
能力一:关键词自动回复,当个不会累的客服
使用场景:群里、私聊里反复出现的高频问题("几点发货""怎么退货"),让脚本替你秒回。
完整代码:
from wxauto import WeChat import time wx = WeChat() # 关键词 -> 回复内容 的映射表,按需增删 RULES = { "发货": "亲,下单后24小时内发货,偏远地区48小时内~", "退货": "退货流程:订单页点申请售后即可,运费险自动生效", "地址": "仓库地址:上海市青浦区XX物流园3号库", } last_replied = {} # 记录已回复的消息,防止重复回复 def reply_bot(): # GetAllNewMessage 一次性拉取所有窗口的未读消息 new_msgs = wx.GetAllNewMessage() for chat_name, messages in new_msgs.items(): for msg in messages: # 每条消息的 sender 是发送人,content 是内容 key = f"{chat_name}_{msg.content}" if last_replied.get(key): continue # 已经回过的就不再回 for word, reply in RULES.items(): if word in msg.content: wx.SendMsg(reply, who=chat_name) last_replied[key] = True print(f"已回复 {chat_name}: {reply}") break while True: try: reply_bot() time.sleep(2) # 每 2 秒扫一次新消息 except Exception as e: print("运行异常,稍后重试:", e) time.sleep(5)关键点逐行解释:
GetAllNewMessage()返回一个字典,键是聊天窗口名,值是该窗口的新消息列表,一行就能同时监控所有窗口;- 消息对象带
.sender(发送人)和.content(正文)两个属性,判断逻辑都建立在它们之上; RULES字典就是你的"话术库",加一条规则只需加一行映射,不用改任何其他代码。
可灵活修改的配置项:轮询间隔time.sleep(2)改大可以降低 CPU 占用;RULES里的关键词和回复文案随时替换成你自己的业务话术。
能力二:重要消息自动转发,不漏一条关键信息
使用场景:把客户群里的"紧急/合同/付款"类消息,自动同步到工作群。
完整代码:
from wxauto import WeChat import time wx = WeChat() KEYWORDS = ["紧急", "合同", "付款", "deadline"] # 触发转发的关键词 TARGET_GROUP = "项目同步群" # 统一转发去向 while True: new_msgs = wx.GetAllNewMessage() for chat_name, messages in new_msgs.items(): for msg in messages: if any(k in msg.content for k in KEYWORDS): # 把原文带上来源,转发到目标群 content = f"【来自{chat_name}】{msg.sender}: {msg.content}" wx.SendMsg(content, who=TARGET_GROUP) print(f"已转发: {content}") time.sleep(3)关键点逐行解释:
any(k in msg.content for k in KEYWORDS)是"只要命中任意一个关键词就触发"的紧凑写法;- 转发内容里拼接了来源窗口和发送人,群里一看就知道消息出处。
可灵活修改的配置项:KEYWORDS换成你们团队的敏感词;TARGET_GROUP可以改成一个列表,用循环逐群发送,实现"一键广播"。
能力三:批量接收好友 + 自动保存聊天图片
使用场景:活动引流期好友申请暴增,图片/文件资料需要自动落地存档。
完整代码:
from wxauto import WeChat wx = WeChat() # 1. 批量处理好友申请:接受并自动打备注 new_friends = wx.GetNewFriends() for friend in new_friends: friend.Accept(remark=f"活动好友_{friend.name}", tags=["活动"]) print("已通过:", friend.name) # 2. 读取当前聊天时,顺手把图片保存到本地 wx.ChatWith("设计对接群") msgs = wx.GetAllMessage(savepic=True) # savepic=True 自动保存图片 for msg in msgs: print(msg.sender, msg.content) # 图片消息的 content 会变成本地保存路径关键点逐行解释:
GetNewFriends()返回待处理的好友申请列表,Accept()可以直接带备注和标签通过,省去手动点按钮;GetAllMessage(savepic=True)会在获取消息的同时把图片下载到本地wxauto文件目录,content 自动替换为文件路径,方便后续归档。
可灵活修改的配置项:备注前缀、标签列表按活动批次替换;savepic还有对应的savefile、savevoice开关,分别控制文件与语音的自动保存。
避坑与调试:高频问题自查手册
| 症状 | 原因 | 解决方案 |
|---|---|---|
| 初始化时报"找不到窗口" | 微信未登录,或版本不是 3.9.X | 确认登录后重跑;必要时给WeChat(language='cn')指定语言版本 |
| 消息读不到/读到旧数据 | 窗口被其他程序遮挡 | 脚本开头先wx._refresh()再操作,且运行时别遮挡微信窗口 |
| 脚本跑几分钟就卡死 | 连续轮询导致 UI 句柄失效 | 在轮询循环里捕获异常并time.sleep,同时每轮调用_refresh()刷新状态 |
| 发送内容偶尔丢失 | 剪贴板被其他程序占用 | 给发送逻辑包一层重试:失败后time.sleep(1)重发,最多重试 3 次 |
# 带重试的发送封装,可直接替换 wx.SendMsg 使用 def safe_send(msg, who, retries=3): for i in range(retries): try: wx.SendMsg(msg, who=who) return True except Exception: time.sleep(2) return False用之前 vs 用之后
| 对比项 | 手动操作 | 接入 wxauto 后 |
|---|---|---|
| 高频问题回复 | 每天重复 50+ 次,每次约 30 秒 | 自动秒回,0 人工 |
| 重要消息转发 | 靠记忆,漏转率约 15% | 关键词命中即转,漏转率降为 0 |
| 聊天图片归档 | 每周整理耗时 1 小时 | 收图即存,耗时 0 |
| 处理准确率 | 忙乱时约 92% | 规则稳定,接近 100% |
超出常规的三种玩法
玩法一:定时值班机器人。用schedule库给上面的回复脚本套一层定时器,早上 9 点自动发早报、下午 6 点自动提醒填日报,微信从此也会"上班打卡"。
import schedule schedule.every().day.at("09:00").do(lambda: wx.SendMsg("早报来了!", who="运营群")) while True: schedule.run_pending() time.sleep(60)玩法二:消息情感雷达。在收到消息时用简单的关键词/情感词典给内容打个分,把带"投诉""差评""愤怒"的消息优先置顶转发给负责人,让坏消息第一时间被发现。
玩法三:群指令机器人。约定群里发"@机器人 查库存",脚本解析出"库存"两个字后去查 Excel 并自动回帖。把RULES从"固定话术"升级成"动态查表",它就从小帮手变成了真正的业务机器人。
生态与趋势
wxauto 项目持续维护,围绕它的交流社区很活跃,文档目录(docs/)里整理了WeChat类、Message类等详细 API 说明,示例代码也在docs/example.md里随版本更新。未来这类桌面 UI 自动化工具的方向,是配合 AI 能力做更聪明的对话决策——你现在的关键词匹配,只是起点。
现在,轮到你动手了
回顾一下今天的关键动作:装好依赖 → 跑通收发消息 → 写关键词回复 → 加转发规则 → 处理避坑项。给你一张行动清单:
- 第一步:
pip install wxauto,确认版本 3.9.X 的微信已登录 - 第二步:复制"第一个能跑的示例",亲眼看到自动发送成功
- 第三步:把
RULES改成你自己最常回复的 5 句话 - 第四步:加一条关键词转发,让测试消息自动进工作群
自动化的意义从来不是取代人,而是把你还给更值得投入的事。今晚就打开编辑器,跑通第一条消息,你会发现——解放双手,其实只需要一次小小的开始。
【免费下载链接】wxautoWindows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考