在Python的世界里,有许多强大的库能帮助我们实现各种自动化任务,wxauto就是其中一款专门用于微信自动化操作的宝藏库。下面就来详细介绍一下它的具体使用方法。

wxauto库简介
wxauto是一个基于UIAutomation的开源Python微信自动化库,支持Windows、macOS和Linux等多种操作系统。它允许用户通过编写Python脚本,轻松实现对微信客户端的自动化操作,具有简单易用、灵活扩展等特点。
安装wxauto库
在命令行工具中运行以下命令即可安装:
pip install wxauto
基本使用方法
- 导入库与初始化
from wxauto import WeChat
# 获取当前微信客户端实例
wx = WeChat()
- 获取登录的微信用户名
name = wx.GetSelfName()
print(f"当前登录的微信用户:{name}")
- 获取最近的会话列表
sessions = wx.GetSessionList()
print("最近的会话列表:")
for session in sessions:
print(session)
- 发送消息
# 发送简单文字消息
msg = 'hello'
who = '文件传输助手'
wx.SendMsg(msg=msg, who=who)
# 带@发送消息
msg = 'xxxxxxx,收到请回复!'
who = '工作群'
at = ('张三', '李四') # 要@的人
wx.SendMsg(msg=msg, who=who, at=at)
- 发送图片、文件和视频
# 发送图片、文件、视频
files = (r'C:\Users\user\Desktop\1.jpg', r'C:\Users\user\Desktop\2.txt', r'C:\Users\user\Desktop\3.mp4')
who = '文件传输助手'
wx.SendFiles(filepath=files, who=who)
- 获取好友信息
friends = wx.get_friends()
for friend in friends:
print(f"好友昵称: {friend('NickName')}, 备注: {friend('RemarkName') if 'RemarkName' in friend else '无'}")
- 获取聊天记录
# 选择需要读取聊天记录的联系人或群组
who = '好友昵称'
# 获取聊天记录
msgs = wx.GetChatMessages(who)
# 打印聊天记录
for msg in msgs:
print(f"发送者: {msg('Sender')}, 内容: {msg('Content')}")
- 自动回复
def auto_reply():
# 获取初始消息记录
initial_msg = ""
while True:
# 获取当前最新消息
last_msgs = wx.GetAllMessage()
if last_msgs:
last_msg = last_msgs[-1]
content = last_msg.get("msg", "")
sender = last_msg.get("sender", "")
if content!= initial_msg:
print(f"收到来自 ({sender}) 的消息:{content}")
# 模拟简单的自动回复逻辑
if "你好" in content:
reply = "你好,有什么可以帮您的吗?"
elif "时间" in content:
reply = f"当前时间是:{time.strftime('%Y-%m-%d %H:%M:%S')}"
else:
reply = "抱歉,我暂时无法理解您的消息。"
# 发送回复
wx.ChatWith(sender)
wx.SendMsg(reply)
print(f"已回复 ({sender}):{reply}")
# 更新初始消息
initial_msg = content
# 设置休眠时间,避免占用过多资源
time.sleep(1)
高级进阶
群操作相关高级方法
- 获取群成员列表
from wxauto import WeChat
wx = WeChat()
group_name = "测试群"
group = wx.FindGroup(group_name)
if group:
members = group.GetGroupMembers()
for member in members:
print(f"群成员昵称: {member['NickName']}, 微信号: {member['Alias'] if 'Alias' in member else '无'}")
- 判断群成员是否在群中
from wxauto import WeChat
wx = WeChat()
group_name = "测试群"
member_name = "张三"
group = wx.FindGroup(group_name)
if group:
is_member = group.IsMemberInGroup(member_name)
if is_member:
print(f"{member_name} 在群中")
else:
print(f"{member_name} 不在群中")
- 获取群公告
from wxauto import WeChat
wx = WeChat()
group_name = "测试群"
group = wx.FindGroup(group_name)
if group:
notice = group.GetGroupNotice()
print(f"群公告:{notice}")
消息处理相关高级方法
- 接收特定类型消息并处理
from wxauto import WeChat
import time
wx = WeChat()
def handle_image_message():
while True:
new_messages = wx.GetNewMessages()
for msg in new_messages:
if msg['msg_type'] == '图片':
print(f"收到来自 {msg['sender']} 的图片消息")
# 这里可以添加保存图片等处理逻辑
time.sleep(2) # 每隔2秒检查一次新消息
handle_image_message()
- 撤回消息
from wxauto import WeChat
wx = WeChat()
who = "文件传输助手"
# 获取最近发送给文件传输助手的消息
messages = wx.GetChatMessages(who)
if messages:
last_msg = messages[-1]
# 假设要撤回最近一条消息,这里可以根据实际情况判断是否满足撤回条件
wx.RecallMsg(last_msg['msg_id'])
微信窗口操作相关高级方法
- 最大化微信窗口
from wxauto import WeChat
wx = WeChat()
wx.MaximizeWindow()
- 最小化微信窗口
from wxauto import WeChat
wx = WeChat()
wx.MinimizeWindow()
- 移动微信窗口位置
from wxauto import WeChat
wx = WeChat()
# 将微信窗口移动到坐标 (100, 100) 处
wx.MoveWindow(100, 100)
好友管理相关高级方法
- 添加好友
from wxauto import WeChat
wx = WeChat()
wx_id = "xxxxxxx" # 微信号或手机号
wx.AddFriend(wx_id)
- 删除好友
from wxauto import WeChat
wx = WeChat()
friend_name = "李四"
wx.DeleteFriend(friend_name)
发送文件到群聊
使用SendFiles方法将文件发送到指定的群聊。以下是一个完整的示例代码:
from wxauto import WeChat
# 获取当前微信客户端实例
wx = WeChat()
# 群聊名称
group_name = "你的群聊名称"
# 要发送的文件路径列表,可以是图片、文档、视频等
file_paths = [
r"C:\path\to\your\file1.txt",
r"C:\path\to\your\file2.jpg",
r"C:\path\to\your\file3.mp4"
]
# 发送文件到群聊
wx.SendFiles(filepath=file_paths, who=group_name)
代码解释
- WeChat():创建一个WeChat对象,用于与微信客户端进行交互。
- SendFiles方法:该方法用于发送文件。它接受两个主要参数:filepath:要发送的文件路径列表,可以包含多个文件的路径。who:接收文件的对象名称,这里是群聊的名称。
注意事项
- 使用wxauto时,请确保微信客户端已经登录,并且保持可见状态,最好将微信客户端窗口置于前台。
- 不要滥用wxauto进行违法、不道德的操作,否则可能会导致微信账号被封禁。
- 由于微信官方API的限制和隐私政策,直接获取微信好友和群组信息等操作可能是不被允许的,在实际应用中需要谨慎处理。
总之,wxauto库为我们提供了一种高效便捷的方式来实现微信操作的自动化,无论是用于自动化客服、营销推广,还是数据分析等场景,都能发挥出巨大的作用,帮助我们提高工作效率,节省时间和精力。但在使用过程中,一定要遵守相关规定和道德准则,合法合规地使用。