WeChat类

🌐

WeChat 类继承了 Chat 的所有方法,有关聊天框内的操作,请参考 Chat的文档。

WeChat 类方法

初始化参数

参数类型默认值描述
resizeboolTrue是否自动调整窗口尺寸,默认是
debugboolFalse是否开启调试模式
from wxautox4 import WeChat

wx = WeChat()

保持程序运行 KeepRunning

由于wxautox4使用守护线程来监听消息,当程序仅用于监听模式时,主线程会退出,因此需要调用此方法来保持程序运行

from wxautox4 import WeChat

wx = WeChat()
wx.AddListenChat('张三', callback=lambda msg, chat: ...)

# 保持程序运行,确保正常监听
wx.KeepRunning()

获取当前会话列表 GetSession

sessions = wx.GetSession()
for session in sessions:
    print(session.info)

返回值

打开聊天窗口 ChatWith

wx.ChatWith(who="张三", exact=False)

参数

参数类型默认值描述
whostr必填要聊天的对象
exactboolFalse搜索好友时是否精确匹配

返回值:无

获取子窗口实例 GetSubWindow

chat = wx.GetSubWindow(nickname="张三")

参数

参数类型默认值描述
nicknamestr必填要获取的子窗口的昵称

返回值

  • 类型:Chat
  • 描述:子窗口实例

获取所有子窗口实例 GetAllSubWindow

chats = wx.GetAllSubWindow()

返回值

  • 类型:List[Chat]
  • 描述:所有子窗口实例的列表

添加监听聊天窗口 AddListenChat

def on_message(msg, chat):
    print(f"收到来自 {chat} 的消息: {msg.content}")

wx.AddListenChat(nickname="张三", callback=on_message)

参数

参数类型默认值描述
nicknamestr必填要监听的聊天对象
callbackCallable[[Message, Chat], None]必填回调函数,参数为(Message对象, Chat对象)

返回值

  • 成功时:

    • 类型:Chat
    • 描述:该监的听子窗口实例
  • 失败时:

    • 类型:WxResponse
    • 描述:执行结果,成功时包含监听名称

移除监听聊天 RemoveListenChat

wx.RemoveListenChat(nickname="张三")

参数

参数类型默认值描述
nicknamestr必填要移除的监听聊天对象

返回值

开始监听 StartListening

wx.StartListening()

参数:无

返回值:无

停止监听 StopListening

wx.StopListening()

参数

参数类型默认值描述
removeboolTrue是否移出所有子窗口

返回值:无

切换到聊天页面 SwitchToChat

wx.SwitchToChat()

返回值:无

切换到联系人页面 SwitchToContact

wx.SwitchToContact()

返回值:无

进入朋友圈 Moments

moments = wx.Moments(timeout=3)

参数

参数类型默认值描述
timeoutint3等待时间(秒)

返回值

  • 类型:MomentsWnd
  • 描述:朋友圈窗口实例

发送朋友圈 PublishMoment

text = '''oh
今天天气真好
适合出去走走

嘿嘿~
'''
media_files = [
    r"D:\Images\Pictures\1.png",
    r"D:\Images\Pictures\2.png",
    r"D:\Images\Pictures\3.png",
]
privacy_config = {
    'privacy': '白名单',    # 设置为黑名单模式
    'tags': ['家人','朋友']      # 白名单为仅这些标签能看,黑名单为屏蔽这些标签的人
}
# privacy_config = {}     # 公开发布,没有任何权限设置
wx.PublishMoment(text, media_files, privacy_config)

获取好友申请 GetNewFriends

newfriends = wx.GetNewFriends(acceptable=True)

参数

参数类型默认值描述
acceptableboolTrue是否过滤掉已接受的好友申请
roll_timesint0向下滚动的次数,为了加载更多好友请求,一般情况下用不到

返回值

示例

newfriends = wx.GetNewFriends(acceptable=True)
tags = ['标签1', '标签2']
for friend in newfriends:
    remark = f'备注{friend.name}'
    friend.accept(remark=remark, tags=tags)  # 接受好友请求,并设置备注和标签

添加新的好友 AddNewFriend

wx.AddNewFriend(keywords="张三", addmsg="我是小明", remark="老张", tags=["同学"], permission="朋友圈", timeout=5)

参数

参数类型默认值描述
keywordsstr必填搜索关键词,可以是昵称、微信号、手机号等
addmsgstrNone添加好友时的附加消息
remarkstrNone添加好友后的备注
tagsList[str]None添加好友后的标签
permissionLiteral['朋友圈', '仅聊天']'朋友圈'添加好友后的权限
timeoutintfloat5

返回值

  • 类型:WxResponse
  • 描述:添加好友的结果

✨获取下一个聊天窗口新消息 GetNextNewMessage

def callback(msg):
    if msg.type == 'image':
        msg.download()

wx.GetNextNewMessage(callback=callback)

参数

参数类型默认值描述
filter_muteboolFalse是否过滤消息免打扰
callbackCallable[[Message], None]None获取消息时的操作,不要在此处执行发送消息等操作,会使消息窗口重置,无法正常获取到所有消息

返回值

  • 类型:Dict[str, List[Message]]
  • 描述:消息列表,键为聊天名称,值为消息列表
  • 示例:
    {'chat_name': 'wxauto交流',
      'chat_type': 'group',
      'remark': '群备注名',  # 仅当有备注名时存在
      'msg': [
          <wxautox - TimeMessage(202552...) at 0x227379555d0>,
          <wxautox - FriendImageMessage([图片]) at 0x2273795ca10>,
          <wxautox - FriendTextMessage(/[微笑]) at 0x22737967c50>,
          <wxautox - FriendTextMessage(你点击发送会自动...) at 0x227366c4f50>, 
          ...
        ]
    }

✨获取最近群聊名称列表 GetAllRecentGroups

groups = wx.GetAllRecentGroups()
if groups:
    print(groups)
else:
    print('获取失败')

返回值

  • 类型:WxResponse | List[str]: 失败时返回WxResponse,成功时返回所有最近群聊列表

✨发送链接卡片 SendUrlCard

wx.SendUrlCard(url="https://example.com", friends="张三", timeout=10)

参数

参数类型默认值描述
urlstr必填链接地址
friendsUnion[str, List[str]]None发送对象,可以是单个用户名或用户名列表
messagestrNone附加消息,默认不发送
timeoutint10等待时间(秒)

返回值

✨获取历史消息 GetHistoryMessage

参数

参数类型默认值描述
nint必填最大获取消息数量
callbackCallable[[Message], None]None获取消息时的操作,不要在此处执行发送消息等操作,会使消息窗口重置,无法正常获取到所有消息
def callback(msg):
    if msg.type == 'image':
        msg.download()

wx.ChatWith('工作群') # 先切换到要获取记录的聊天窗口
msgs = wx.GetHistoryMessage(n=50, callback=callback) # 获取50条消息

callback函数支持设置停止条件,当回调函数返回值为 WxParam.CALLBACK_STOP_SIGN 时停止

from wxautox4 import WxParam
from wxautox4.msgs import TimeMessage   # v40.1.9及以上版本支持TimeMessage对象

# 示例:如果找到带有“通知”字眼的消息则停止获取
def history_callback(msg):
    # 当消息内容里包含特定字词时停止
    if '通知' in msg.content:
        print('获取到包含“通知”的消息,停止获取历史消息')
        return WxParam.CALLBACK_STOP_SIGN

    # 当消息时间超过特定时间时停止     # v40.1.9及以上版本支持TimeMessage对象
    if isinstance(msg, TimeMessage) and msg.time < '2026-02-01':
        print('获取到早于2026年2月1日的消息,停止获取历史消息')
        return WxParam.CALLBACK_STOP_SIGN

wx.GetHistoryMessage(n=100, callback=history_callback)
INFO
  1. v40.1.8及以上版本支持CALLBACK_STOP_SIGN作为停止条件
  2. v40.1.9及以上版本支持TimeMessage对象

返回值:

✨获取好友列表 GetFriendDetails

# 获取前10个好友详情信息
messages = wx.GetFriendDetails(n=10)

参数

参数类型默认值描述
nintNone获取前n个好友详情信息
timeoutint0xFFFFF获取超时时间(秒)
save_head_imageboolFalse是否获取头像,默认否
save_head_waitint0等待时间,有时候头像加载需要时间,可设置此参数等待加载

返回值

  • 类型:List[dict]
  • 描述:好友详情信息列表
# 案例
{'头像': 'D:\\myproject\\wxautox文件下载\\头像\\202511210038064171.png',
  '昵称': '张三',
  '微信号': 'zhangsan',
  '标签': 'wxauto',
  '共同群聊': '3个',
  '个性签名': '天道酬勤',
  '来源': '通过扫一扫添加'}
WARNING
  1. 该方法运行时间较长,约0.3~0.5秒一个好友的速度,好友多的话可将n设置为一个较小的值,先测试一下
  2. 由于客户端特性,4.x版本不再支持tag参数

是否在线 IsOnline

wx.IsOnline()

返回值

  • 类型:bool

获取我的信息 GetMyInfo

获取自己的微信号等信息

wx.GetMyInfo()

返回值

  • 类型:Dict[str, str]