配置 和 实例
配置要求
- 系统:Windows 10|11|Server2016+
- Python:3.7+(不支持3.7.6和3.8.1)
- 微信3.9.11.17版本
下载库和实例化微信
1:首先在pycharm终端中下载
pip install wxauto
2:你要在电脑上登录你的微信
3:导入和初始化微信
# 导入
from wxauto import WeChat
# 获取微信窗口对象
wx = WeChat()
# 输出 > 初始化成功,获取到已登录窗口:xxxx
测试
from wxauto import WeChat
wx = WeChat()
msg = 'hello, world!'
who = '文件传输助手'
wx.SendMsg(msg=msg, who=who)
wx.SendMsg(msg=msg, who=who, at=at)
要等他搜索和发送
发送消息
1:@某人或某些人
from wxauto import WeChat
wx = WeChat()
msg = 'xxxxxxx,收到请回复!'
who = '工作群A'
at = ['张三', '李四'] # 要@的人
wx.SendMsg(msg=msg, who=who, at=at)
2:发送文件、视频、图片
from wxauto import WeChat
wx = WeChat()
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: 获取当前对象的各种消息
from wxauto import WeChat
wx = WeChat()
# 获取对应界面人物所有消息
msgs = wx.GetAllMessage()
# 输出消息内容
for msg in msgs:
if msg.type == 'sys':
print(f'【系统消息】{msg.content}') #比如你邀请了张三,你已经退出群聊
elif msg.type == 'friend':
sender = msg.sender # 这里可以将msg.sender改为msg.sender_remark,获取备注名
print(f'{sender.rjust(20)}:{msg.content}')
elif msg.type == 'self':
print(f'{msg.sender.ljust(20)}:{msg.content}')
elif msg.type == 'time':
print(f'\n【时间消息】{msg.time}')
elif msg.type == 'recall':
print(f'【撤回消息】{msg.content}')
2:图片文件语音转文字保存
from wxauto import WeChat
wx = WeChat()
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage(
savepic = True, # 保存图片
savefile = True, # 保存文件
savevoice = True # 保存语音转文字内容
)
# 输出消息内容
for msg in msgs:
if msg.type == 'sys':
print(f'【系统消息】{msg.content}')
elif msg.type == 'friend':
sender = msg.sender # 这里可以将msg.sender改为msg.sender_remark,获取备注名
print(f'{sender.rjust(20)}:{msg.content}')
elif msg.type == 'self':
print(f'{msg.sender.ljust(20)}:{msg.content}')
elif msg.type == 'time':
print(f'\n【时间消息】{msg.time}')
elif msg.type == 'recall':
print(f'【撤回消息】{msg.content}')
3:加载历史聊天记录
from wxauto import WeChat
wx = WeChat()
# 加载更多历史消息
wx.LoadMoreMessage()
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage()
... # 自行构建消息处理逻辑
获取主界面的消息
1:获得已发送所有消息
from wxauto import WeChat
wx = WeChat()
# 获取所有新消息
msgs = wx.GetAllNewMessage()
2:获取下一条消息
from wxauto import WeChat
wx = WeChat()
# 获取下一条新消息
msgs = wx.GetNextNewMessage()
3:监听消息
from wxauto import WeChat
wx = WeChat()
# 首先设置一个监听列表,列表元素为指定好友(或群聊)的昵称
listen_list = [
'张三',
'李四',
'工作群A',
'工作群B'
]
# 然后调用`AddListenChat`方法添加监听对象,其中可选参数`savepic`为是否保存新消息图片
for i in listen_list:
wx.AddListenChat(who=i)
msgs = wx.GetListenMessage()
for chat in msgs:
one_msgs = msgs.get(chat) # 获取消息内容
# 回复收到
for msg in one_msgs:
if msg.type == 'sys':
print(f'【系统消息】{msg.content}')
elif msg.type == 'friend':`
sender = msg.sender # 这里可以将msg.sender改为msg.sender_remark,获取备注名
print(f'{sender.rjust(20)}:{msg.content}')
# !!! 回复收到,此处为`chat`而不是`wx` !!!
chat.SendMsg('收到')
# 此处将msg.content传递给大模型,再由大模型返回的消息回复即可实现ai聊天
elif msg.type == 'self':
print(f'{msg.sender.ljust(20)}:{msg.content}')
elif msg.type == 'time':
print(f'\n【时间消息】{msg.time}')
elif msg.type == 'recall':
print(f'【撤回消息】{msg.content}')
添加好友
1:基本方式
from wxauto import WeChat
wx = WeChat()
keywords = '13800000000' # 微信号、手机号、QQ号
addmsg = '你好,我是xxxx' # 添加好友的消息
remark = '备注名字' # 备注名,没有则不用设置
tags = ['朋友', '同事'] # 标签列表
# 发起好友申请
wx.AddNewFriend(keywords, addmsg=addmsg, remark=remark, tags=tags)
2:获取好友申请表
from wxauto import WeChat
wx = WeChat()
new = wx.GetNewFriends()
3:通过好友申请列表
from wxauto import WeChat
wx = WeChat()
new = wx.GetNewFriends()
# 获取第一个可接受的新好友对象
new_friend1 = new[0] #没有就会报错,可以用try和while写一个无限循环来检测
print(new_friend1.name) # 获取好友申请昵称
# 张三
print(new_friend1.msg) # 获取好友申请信息
# 你好,我是xxx群的张三
# 接受好友请求,并且添加备注“备注张三”、添加标签wxauto
new_friend1.Accept(remark='备注张三', tags=['同事'])
# 切换回聊天页面,添加后需要切换到聊天界面
wx.SwitchToChat()
切换界面
wx.SwitchToContact()#切换到通讯录
wx.SwitchToChat() #切换到聊天主界面
定时发送
1:倒计时发送
from wxauto import WeChat
import time
import datetime
# 设定倒计时的时间
countdown_time = "00:01:00"
# 将倒计时时间转换为秒
def time_to_seconds(timestr):
hours, minutes, seconds = map(int, timestr.split(':'))
return hours * 3600 + minutes * 60 + seconds
# 获取当前时间
current_time = datetime.datetime.now()
# 计算倒计时结束的时间
end_time = current_time + datetime.timedelta(seconds=time_to_seconds(countdown_time))
# 持续检查当前时间,直到倒计时结束
while True:
current_time = datetime.datetime.now()
remaining_time = end_time - current_time
# 如果倒计时已经结束,发送消息并退出循环
if remaining_time.total_seconds() <= 0:
wx = WeChat()
msg = 'hello, world!'
who = '文件传输助手'
wx.SendMsg(msg=msg, who=who)
break
# 打印剩余时间
print(f"倒计时:{remaining_time.total_seconds()}秒")
time.sleep(1)
2:准时发送
from wxauto import WeChat
import time
while True:
time_now= time.strftime("%H:%M:%S",time.localtime()) #随时获取当前时间随时获取
if time_now=="17:56:52" //这里写你要发送消息的时间时分秒
wx=WeChat()
msg = 'hello, world!'
who = '文件传输助手'
wx.SendMsg(msg=msg, who=who)