公司动态
用 wxauto 实现微信自动化:4 个实战脚本,让机器人替你回消息、转消息、存消息
用 wxauto 实现微信自动化4 个实战脚本让机器人替你回消息、转消息、存消息【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto深夜十一点房产中介小林还在给第八位客户重复粘贴同一条看房须知。按下发送键的那一刻他突然意识到如果这些机械动作能交给程序自己是不是就能准点下班这就是wxauto的用武之地——一个基于 Windows UI 自动化技术、专为微信 PC 客户端3.9.X 版本打造的自动化工具。这篇wxauto 教程将从四个真实痛点出发带你用四个可运行的 Python 脚本跑通微信自动化关键词自动回复、消息规则转发、聊天记录归档、定时任务。全部代码短小直白新手照着抄也能跑起来。开工准备装好 wxauto确认运行环境先交代三件事避免后面白忙活系统要求Windows 10/11微信必须使用 3.9.X 版本Python 3.9 及以上。安装方式命令一行搞定。pip install wxauto想体验最新代码也可以把仓库克隆到本地再以开发模式安装git clone https://gitcode.com/gh_mirrors/wx/wxauto cd wxauto pip install -e .安装完成后先手动打开电脑上的微信并登录保持主窗口可见再跑一段冒烟测试from wxauto import WeChat wx WeChat() # 初始化成功会打印当前登录账号昵称 wx.SendMsg(你好这是wxauto的测试消息, who文件传输助手) msgs wx.GetAllMessage() # 读取当前窗口最近的消息 for m in msgs[-3:]: print(m.sender, -, m.content)能正常收发环境就绪可以进入正题了。痛点一同样的问题每天回答几十遍试试关键词自动回复看房客户问来问去无非是地址、首付、过户、报价。与其复制粘贴不如维护一张问题 → 标准话术对照表让机器人替你应答。下面是完整的wxauto 自动回复 代码核心思路轮询所有新消息 → 关键词命中 → 自动回复 → 去重防刷屏。from wxauto import WeChat import time # 话术对照表把客户高频问题映射到标准答案 faq { 地址: 我们门店在望京SOHO T1座1806地铁15号线望京东站C口步行约5分钟, 看房时间: 本周二至周日 10:00-18:00 均可提前半小时和我约即可, 首付: 首套房首付最低20%具体看贷款政策方便的话电话细聊, 过户: 过户一般7到15个工作日材料我们全程跟进, 报价: 这套房挂牌450万价格可谈您的心理价位大概多少, } wx WeChat() # 初始化微信自动化实例 replied set() # 已处理消息的去重集合防止同一消息被反复回复 def auto_reply_loop(): print([启动] 关键词自动应答开始监听...) while True: try: # GetAllNewMessage() 一次性带回所有会话的新消息返回 {会话名: [消息...]} for session, msg_list in wx.GetAllNewMessage().items(): for m in msg_list: mark (session, m.id) # 会话名消息id 作为唯一标记 if mark in replied or not m.content: continue for word, answer in faq.items(): if word in m.content: # 命中关键词 wx.SendMsg(answer, whosession) print(f[已回复] {session}{answer[:18]}...) replied.add(mark) break time.sleep(2) # 每2秒轮询一轮 except Exception as e: print(f[异常] {e}5秒后自动重试) time.sleep(5) if __name__ __main__: auto_reply_loop()运行说明保持微信主窗口打开直接python auto_reply.py即可。想临时下线直接关闭终端即可不会对微信造成任何影响。痛点二重要消息被刷屏淹没让规则帮你自动转发小林最头疼的其实是漏消息——客户半夜发来合同有变没人转发第二天才发现。转发的逻辑可以拆成两类规则按来源转发某个客户的消息必须进哪个群和按关键词上报出现紧急打款等字眼就汇总。这段微信消息自动转发脚本把两类规则都实现了from wxauto import WeChat import time wx WeChat() # 路由表来源会话 - 要转发到的目标会话列表 route_table { 客户A: [销售复盘群, 领导同步群], 供应商: [采购对接群], } # 关键词表任意会话出现这些词统一上报到汇总群 alert_words [紧急, 合同, 打款, 违约, deadline] def forward_loop(): print([启动] 消息自动转发服务运行中...) done set() while True: try: for session, msg_list in wx.GetAllNewMessage().items(): for m in msg_list: mark (session, m.id) if mark in done: continue content m.content or # 命中来源路由按路由表分发到多个群 if session in route_table: body f【转发自{session}】{m.sender}{content} for target in route_table[session]: wx.SendMsg(body, whotarget) print(f[路由转发] - {target}) # 命中关键词原文带前缀上报 elif any(w in content for w in alert_words): body f【紧急同步】{session} 的 {m.sender} 说{content} wx.SendMsg(body, who消息汇总群) print(f[关键词上报] {content[:30]}...) done.add(mark) time.sleep(2) except Exception as e: print(f[异常] {e}稍后重试) time.sleep(5) if __name__ __main__: forward_loop()运行说明把route_table里的会话名替换成你自己的真实名称SendMsg发送时会自动切换到对应会话无需手动点窗口。痛点三聊天记录靠人肉整理写个脚本一键归档每周写客户跟进周报时小林都要翻几十个聊天窗口逐条复制至少耗掉半小时。利用 wxauto 的GetSessionList ChatWith GetAllMessage组合可以把所有会话的消息导出成 CSVExcel 直接打开就能用import csv from wxauto import WeChat wx WeChat() def archive_to_csv(outputchat_archive.csv): 遍历所有会话导出聊天记录为 CSVutf-8-sig 防止 Excel 乱码 rows [] sessions wx.GetSessionList() # 获取当前聊天列表 for name in sessions: try: wx.ChatWith(name) # 切换到对应会话 for m in wx.GetAllMessage(): # 读取该会话全部消息 rows.append({ 会话: name, 时间: getattr(m, time, ), 发送人: m.sender, 内容: m.content, 类型: m.type, }) except Exception as e: print(f[跳过] 会话 {name}{e}) with open(output, w, newline, encodingutf-8-sig) as f: writer csv.DictWriter(f, fieldnames[会话, 时间, 发送人, 内容, 类型]) writer.writeheader() writer.writerows(rows) print(f[完成] 共导出 {len(rows)} 条记录到 {output}) if __name__ __main__: archive_to_csv()运行说明脚本会按顺序逐个打开会话再读取会话较多时请耐心等待归档结果可配合 Excel 透视表做客户咨询分析。痛点四例行提醒总忘记定时任务替你按点上班早安问候、日报催收、带看群房源推送——这类每天固定时间干一次的活不必引入额外的定时库一个简单的轮询循环就能完成import time from datetime import datetime from wxauto import WeChat wx WeChat() def run_daily(hhmm, job): 每天 hhmm如09:00执行一次 job跨天自动重置 fired set() while True: now datetime.now() stamp now.strftime(%Y-%m-%d %H:%M) if now.strftime(%H:%M) hhmm and stamp not in fired: job() fired.add(stamp) # 只保留今天的触发记录第二天可再次触发 fired {t for t in fired if t.startswith(now.strftime(%Y-%m-%d))} time.sleep(20) # 每20秒检查一次时间误差可忽略 def morning_push(): wx.SendMsg(早上好今日新上房源已整理好记得查收, who带看群) print([定时任务] 09:00 晨间推送已发送) if __name__ __main__: run_daily(09:00, morning_push)运行说明改成你自己的群名和时间即可Windows 下把脚本设为开机自启或放入任务计划程序就能长期无人值守运行。避坑手册新手最容易翻车的 3 个地方坑一初始化失败或找不到会话控件现象WeChat()报错或SendMsg时提示找不到目标。 原因微信版本不是 3.9.X或微信没登录、窗口被最小化/遮挡。 对策先手动打开微信并登录代码里在WeChat()之后调用一次wx._refresh()刷新控件树发送前用wx.ChatWith(name)先定位会话成功率会高很多。坑二脚本跑一两个小时就卡死现象程序无响应或偶尔发消息没反应。 原因长时间运行后 UI 控件句柄失效属于自动化工具的常见问题不是 wxauto 独有。 对策把脚本拆成每 N 分钟处理一轮、每 1 小时自动重启一次的模式用threading起一个守护线程配合os.execv重启自身比追着修句柄省事得多。坑三同一条消息被回复/转发两次现象消息刚进来被处理了一次刷新后又被处理一次。 原因没有做消息去重。 对策示例里都用(会话名, msg.id)作为唯一标记存入集合处理前先查重——这是所有轮询类机器人必须养成的习惯。效果对比与下一步行动把上面的脚本拼起来小林的一天发生了这样的变化项目使用前使用后高频咨询回复每天手动回复 40 次自动应答释放约 2 小时/天重要消息转发平均漏转 5~8 条/周规则兜底漏转率为 0周报聊天记录整理手动复制约 40 分钟/周脚本秒级导出零耗时例行提醒靠脑子记偶尔忘定时任务100% 准点接下来你可以按这份清单继续深入先跑通冒烟测试确认本机环境可用从关键词自动回复入手跑通第一个完整机器人把路由表和话术表改成自己的真实业务数据尝试监听接口如AddListenChat配合消息回调做更精细的处理最后再把脚本接入任务计划程序实现长期无人值守。最后提醒一句wxauto 基于 UI 自动化实现请仅在个人学习与合理业务范围内使用遵守微信使用规范不要用于骚扰、刷屏或任何灰色场景。工具本身没有立场怎么用它取决于你。自动化不是为了偷懒而是把重复交给程序、把时间还给创造。今晚就让小林的故事发生在你身上。【免费下载链接】wxautoWindows版本微信客户端非网页版自动化可实现简单的发送、接收微信消息简单微信机器人项目地址: https://gitcode.com/gh_mirrors/wx/wxauto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考