WeChat类
WeChat 类方法
概念
为确保您可以理解该文档的一些内容,这里先简单介绍一下 wxauto(x) 的设计思路,如下图所示,wxauto(x) 将微信窗口拆解为三部分:
- 导航栏(NavigationBox):下图蓝色框内部分
- 会话列表(SessionBox):下图绿色框内部分
- 会话列表项(
SessionElement
):会话列表中每一个会话的元素,如好友、群聊、公众号等
- 会话列表项(
- 聊天框(Chat):下图红色框内部分
初始化参数
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
nickname | str | None | 微信昵称,用于定位特定的微信窗口 |
debug | bool | False | 是否开启调试模式 |
from wxautox import WeChat
wx = WeChat()
保持程序运行 KeepRunning
由于wxautox使用守护线程来监听消息,当程序仅用于监听模式时,主线程会退出,因此需要调用此方法来保持程序运行
from wxautox import WeChat
wx = WeChat()
wx.AddListenChat('张三', callback=lambda msg, chat: ...)
# 保持程序运行,确保正常监听
wx.KeepRunning()
获取当前会话列表 GetSession
sessions = wx.GetSession()
for session in sessions:
print(session.info)
返回值:
- 类型:List[SessionElement]
- 描述:当前会话列表
✨发送链接卡片 SendUrlCard
wx.SendUrlCard(url="https://example.com", friends="张三", timeout=10)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
url | str | 必填 | 链接地址 |
friends | Union[str, List[str]] | None | 发送对象,可以是单个用户名或用户名列表 |
timeout | int | 10 | 等待时间(秒) |
返回值:
- 类型:
WxResponse
- 描述:发送结果
打开聊天窗口 ChatWith
wx.ChatWith(who="张三", exact=False)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
who | str | 必填 | 要聊天的对象 |
exact | bool | False | 搜索好友时是否精确匹配 |
返回值:无
获取子窗口实例 GetSubWindow
chat = wx.GetSubWindow(nickname="张三")
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
nickname | str | 必填 | 要获取的子窗口的昵称 |
返回值:
- 类型:
Chat
- 描述:子窗口实例
获取所有子窗口实例 GetAllSubWindow
chats = wx.GetAllSubWindow()
返回值:
- 类型:List[
Chat
] - 描述:所有子窗口实例的列表
添加监听聊天窗口 AddListenChat
def on_message(msg, chat):
print(f"收到来自 {chat} 的消息: {msg.content}")
wx.AddListenChat(nickname="张三", callback=on_message)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
nickname | str | 必填 | 要监听的聊天对象 |
callback | Callable[[Message, Chat], None] | 必填 | 回调函数,参数为(Message对象, Chat对象) |
返回值:
成功时:
- 类型:Chat
- 描述:该监的听子窗口实例
失败时:
- 类型:
WxResponse
- 描述:执行结果,成功时包含监听名称
- 类型:
移除监听聊天 RemoveListenChat
wx.RemoveListenChat(nickname="张三")
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
nickname | str | 必填 | 要移除的监听聊天对象 |
返回值:
- 类型:
WxResponse
- 描述:执行结果
开始监听 StartListening
wx.StartListening()
参数:无
返回值:无
停止监听 StopListening
wx.StopListening()
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
remove | bool | True | 是否移出所有子窗口 |
返回值:无
✨进入朋友圈 Moments
moments = wx.Moments(timeout=3)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
timeout | int | 3 | 等待时间(秒) |
返回值:
- 类型:
MomentsWnd
- 描述:朋友圈窗口实例
获取下一个新消息 GetNextNewMessage
messages = wx.GetNextNewMessage(filter_mute=False)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
filter_mute | bool | False | 是否过滤掉免打扰消息 |
返回值:
- 类型:Dict[str, List[Message]
- 描述:消息列表,键为聊天名称,值为消息列表
- 示例:
{'chat_name': 'wxauto交流', 'chat_type': 'group', 'msg': [ <wxautox - TimeMessage(2025年5月2...) at 0x227379555d0>, <wxautox - FriendImageMessage([图片]) at 0x2273795ca10>, <wxautox - FriendTextMessage(/[微笑]) at 0x22737967c50>, <wxautox - FriendTextMessage(你点击发送会自动...) at 0x227366c4f50>, ... ] }
✨获取好友列表 GetFriendDetails
# 获取前10个好友详情信息
messages = wx.GetFriendDetails(n=10)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
n | int | None | 获取前n个好友详情信息 |
tag | str | None | 从指定拼音首字母开始 |
timeout | int | 0xFFFFF | 获取超时时间(秒) |
返回值:
- 类型:List[dict]
- 描述:好友详情信息列表
Warning
- 该方法运行时间较长,约0.5~1秒一个好友的速度,好友多的话可将n设置为一个较小的值,先测试一下
- 如果遇到企业微信的好友且为已离职状态,可能导致微信卡死,需重启(此为微信客户端BUG)
- 该方法未经过大量测试,可能存在未知问题,如有问题请微信群内反馈
✨获取新的好友申请列表 GetNewFriends
newfriends = wx.GetNewFriends(acceptable=True)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
acceptable | bool | True | 是否过滤掉已接受的好友申请 |
返回值:
- 类型:List[
NewFriendElement
] - 描述:新的好友申请列表
示例:
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)
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
keywords | str | 必填 | 搜索关键词,可以是昵称、微信号、手机号等 |
addmsg | str | None | 添加好友时的附加消息 |
remark | str | None | 添加好友后的备注 |
tags | List[str] | None | 添加好友后的标签 |
permission | Literal[‘朋友圈’, ‘仅聊天’] | ‘朋友圈’ | 添加好友后的权限 |
timeout | int | 5 | 搜索好友的超时时间(秒) |
返回值:
- 类型:
WxResponse
- 描述:添加好友的结果
✨获取最近群聊名称列表 GetAllRecentGroups
groups = wx.GetAllRecentGroups()
if groups:
print(groups)
else:
print('获取失败')
返回值:
- 类型:WxResponse | List[str]: 失败时返回WxResponse,成功时返回所有最近群聊列表
切换到聊天页面 SwitchToChat
wx.SwitchToChat()
返回值:无
切换到联系人页面 SwitchToContact
wx.SwitchToContact()
返回值:无
✨是否在线 IsOnline
wx.IsOnline()
返回值:
- 类型:bool
✨获取我的信息 GetMyInfo
获取自己的微信号等信息
wx.GetMyInfo()
返回值:
- 类型:Dict[str, str]
✨获取通讯录群聊列表 GetContactGroups
获取通讯录中的群聊列表
wx.GetContactGroups()
参数:
Note
自动化操作个体差异较大,根据实际情况调整以下参数,速度不合适可能导致漏掉部分群聊
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
speed | int | 1 | 滚动速度 |
interval | float | 0.1 | 滚动时间间隔 |
返回值:
- 类型:List[str]