Python神器wxauto:微信自动化的得力助手

站长
0 评论
/ /
383 阅读
/
14321 字
15 2025-02

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

 

wxauto库简介

wxauto是一个基于UIAutomation的开源Python微信自动化库,支持Windows、macOS和Linux等多种操作系统。它允许用户通过编写Python脚本,轻松实现对微信客户端的自动化操作,具有简单易用、灵活扩展等特点。

安装wxauto库

在命令行工具中运行以下命令即可安装:

pip install wxauto

基本使用方法

  1. 导入库与初始化
from wxauto import WeChat

# 获取当前微信客户端实例
wx = WeChat()
  1. 获取登录的微信用户名
name = wx.GetSelfName()
print(f"当前登录的微信用户:{name}")
  1. 获取最近的会话列表
sessions = wx.GetSessionList()
print("最近的会话列表:")
for session in sessions:
    print(session)
  1. 发送消息
# 发送简单文字消息
msg = 'hello'
who = '文件传输助手'
wx.SendMsg(msg=msg, who=who)

# 带@发送消息
msg = 'xxxxxxx,收到请回复!'
who = '工作群'
at = ('张三', '李四')  # 要@的人
wx.SendMsg(msg=msg, who=who, at=at)
  1. 发送图片、文件和视频
# 发送图片、文件、视频
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)
  1. 获取好友信息
friends = wx.get_friends()
for friend in friends:
    print(f"好友昵称: {friend('NickName')}, 备注: {friend('RemarkName') if 'RemarkName' in friend else '无'}")
  1. 获取聊天记录
# 选择需要读取聊天记录的联系人或群组
who = '好友昵称'  
# 获取聊天记录
msgs = wx.GetChatMessages(who)
# 打印聊天记录
for msg in msgs:
    print(f"发送者: {msg('Sender')}, 内容: {msg('Content')}")
  1. 自动回复
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)

高级进阶

群操作相关高级方法

  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 '无'}")
  1. 判断群成员是否在群中
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} 不在群中")
  1. 获取群公告
from wxauto import WeChat

wx = WeChat()
group_name = "测试群"
group = wx.FindGroup(group_name)
if group:
    notice = group.GetGroupNotice()
    print(f"群公告:{notice}")

消息处理相关高级方法

  1. 接收特定类型消息并处理
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()
  1. 撤回消息
from wxauto import WeChat

wx = WeChat()
who = "文件传输助手"
# 获取最近发送给文件传输助手的消息
messages = wx.GetChatMessages(who)
if messages:
    last_msg = messages[-1]
    # 假设要撤回最近一条消息,这里可以根据实际情况判断是否满足撤回条件
    wx.RecallMsg(last_msg['msg_id'])

微信窗口操作相关高级方法

  1. 最大化微信窗口
from wxauto import WeChat

wx = WeChat()
wx.MaximizeWindow()
  1. 最小化微信窗口
from wxauto import WeChat

wx = WeChat()
wx.MinimizeWindow()
  1. 移动微信窗口位置
from wxauto import WeChat

wx = WeChat()
# 将微信窗口移动到坐标 (100, 100) 处
wx.MoveWindow(100, 100)

好友管理相关高级方法

  1. 添加好友
from wxauto import WeChat

wx = WeChat()
wx_id = "xxxxxxx"  # 微信号或手机号
wx.AddFriend(wx_id)
  1. 删除好友
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库为我们提供了一种高效便捷的方式来实现微信操作的自动化,无论是用于自动化客服、营销推广,还是数据分析等场景,都能发挥出巨大的作用,帮助我们提高工作效率,节省时间和精力。但在使用过程中,一定要遵守相关规定和道德准则,合法合规地使用。