目录

安装

获取信息

发送文字

单行信息

多行信息

发送文件

wxauto是Windows版本微信客户端自动化框架,可以实现简单的发送、接收、读取信息等。

在使用前必须登录微信客户端,且不能关闭微信客户端窗口,否则无法获取微信客户端信息。

安装

wxauto安装方式很简单,在终端执行如下代码即可:

pip install wxauto

获取信息

获取当前微信聊天窗口聊天代码如下:

from wxauto import *
wx = WeChat()    # 获取当前微信客户端
msgs = wx.GetAllMessage   # 获取当前聊天窗口聊天消息
for msg in msgs:
    print(msg[0],msg[1])

获取到的微信聊天信息是以元组的方式存储,其中元组的第一个值为微信名,第二个值为微信聊天信息。

当我们想获取指定好友的微信信息时,可以使用Search()方法搜索指定好友并打开该好友的对话窗,再用GetAllMessage()方法获取当前聊天窗口的聊天信息,示例代码如下:

from wxauto import *
wx = WeChat()    # 获取当前微信客户端
wx.Search('文件传输助手')  # 搜索指定好友
msgs = wx.GetAllMessage   # 获取当前聊天窗口聊天消息
for msg in msgs:
    print(msg[0],msg[1])

注意:

  • 当搜索的微信昵称不完全匹配时,只会选取搜索框的第一个;
  • 只能获取已加载的聊天信息。

当我们想获取所有聊天信息时,可以LoadMoreMessage()方法滚动鼠标滚轮,加载更多聊天记录到内存,示例代码如下:

from wxauto import *
wx = WeChat()    # 获取当前微信客户端
wx.LoadMoreMessage()   # 在聊天窗口中滚动鼠标滚轮
msgs = wx.GetAllMessage   # 获取当前聊天窗口聊天消息
for msg in msgs:
    print(msg[0],msg[1])

这样就可以获取到更多聊天信息了。

发送文字

单行信息

发送单行信息示例代码如下:

from wxauto import *
wx = WeChat()     # 获取当前微信客户端
msg = '你好~'        # 发送的内容
who = '文件传输助手'     # 接收信息的微信好友昵称
wx.ChatWith(who)     # 打开与接收信息的微信好友聊天对话框
wx.SendMsg(msg)   # 发送信息

当当前会话列表中有你要发送信息的微信好友时,会直接定位到好友对话框再发送信息;

当当前会话列表中没有你要发送信息的微信好友时,会先向下滚动会话列表,若还是没有找到好友时,会在搜索框进行搜索。

注意:默认删除对话框原有的文字,当你想保留时,可以使用clear参数,示例代码如下:

from wxauto import *
wx = WeChat()     # 获取当前微信客户端
msg = '你好~'        # 发送的内容
who = '文件传输助手'     # 接收信息的微信好友昵称
wx.ChatWith(who)     # 打开与接收信息的微信好友聊天对话框
wx.SendMsg(msg,clear=False)   # 不清除原对话框原有文字

多行信息

当我们想发送多行信息时,可以使用WxUtils.SetClipboard()方法将需要发送的信息存储到剪贴板,再通过SendClipboard()方法将剪贴板的信息复制到聊天对话框并发送,示例代码如下:

from wxauto import *
wx = WeChat()   # 获取当前微信客户端
msg = f'''你好
第二行
第三行
第四行'''
who = '文件传输助手'  # 接收好友昵称
wx.ChatWith(who)   # 打开与接收信息的微信好友聊天对话框
WxUtils.SetClipboard(msg) # 将需要发送的信息存储到剪贴板
wx.SendClipboard()    # 发送信息

发送文件

发送文件与发送文字类似,只是发送文件使用SendFiles(),示例代码如下:

from wxauto import *
wx = WeChat()
file1 = f'E:/文件.xlsx'           # 需要发送的文件
file2 = f'E:/文件2.xlsx'    
who = '文件传输助手'    # 接收好友
wx.ChatWith(i)
wx.SendFiles(file1,file2)

当没有找到要发送的文件时,程序会自动终止运行,我们可以在SendFiles()方法中添加not_exists='ignore'代码,即使找不到文件也不终止程序。

注意:在程序运行时,不要随意移动鼠标,否则会有意想不到的惊喜!!!