前言https://blog.csdn.net/weixin_60159567/article/details/143699663
本文章将介绍如何使用Python和wxauto、langchain、一个免费的api-key实现一个微信AI聊天机器人,自动回复消息
准备
本文章使用Python3.13
编辑器使用的是PyCharm
使用wxauto实现微信消息的自动发送以及langchain调用智谱AI大模型(免费),当然你也可以切换为其他服务商的
开始之前先使用pip安装几个需要用到的软件包
# 安装wxauto
pip install wxauto
# 安装 langchain
pip install langchain_core
pip install langchain_openai
# 安装 dotenv 加载环境变量
pip install dotenv
1
2
3
4
5
6
7
8
9
点击进入智谱AI大模型注册一个账号
注册成功之后点击页面右上角的API秘钥
这个就是等会要使用的key
wxauto
介绍
没安装的话先安装一下:
pip install wxauto
1
wxauto是一个基于UIAutomation的开源的Python为四年自动化库,使用方式简单,即使是Python初学者也可以简单上手自动化微信操作
比如向文件传输助手发送消息:
from wxauto import *
# 初始化微信duixinag
wx = WeChat()
# 向文件助手发送 Hello World!
wx.SendMsg("Hello World!","文件传输助手")
from wxauto import *
# 初始化微信duixinag
wx = WeChat()
# 向文件助手发送 Hello World!
wx.SendMsg("Hello World!","文件传输助手")
以上代码就简单实现了一个发送消息的功能,第一个参数是消息内容,第二个参数是发送对象
此时点击▶️运行,就会自动打开微信文件传输助手的聊天窗口发送Hello World!的消息,当然前提是你先登录你的微信先
使用<font style="color:rgb(31, 35, 41);">wxauto</font>,许多的日常微信操作均可实现自动化,比如自动向指定的联系人或群组发送消息、自动添加好友、智能设定自动回复规则、高效自动获取包括聊天记录、图片、文件等在内的各类信息资源,为微信使用场景带来便捷高效的自动化体验。
好啦!到这你可以直接跳到实现步骤那里,接下来我将详细介绍一下<font style="color:rgb(31, 35, 41);">wxauto</font>的使用
wxauto的基本使用
1.发送文字消息
from wxauto import *
# 创建微信窗口对象
wx = WxChat()
# 消息内容
msg = "Hello World!"
# 要发送给谁
who = "世界"
# 是否清除原本聊天框的消息内容
clear = True
# 要@的人可以是一个列表 "世界" 或 ["世界","你好"]
at = ["世界","你好"]
wx.SendMsg(msg=msg,who=who,clear=clear,at=at) # @世界 @你好 Hello World!
from wxauto import *
# 创建微信窗口对象
wx = WxChat()
# 消息内容
msg = "Hello World!"
# 要发送给谁
who = "世界"
# 是否清除原本聊天框的消息内容
clear = True
# 要@的人可以是一个列表 "世界" 或 ["世界","你好"]
at = ["世界","你好"]
wx.SendMsg(msg=msg,who=who,clear=clear,at=at) # @世界 @你好 Hello World!
2.发送图片
# 发送的文件列表
files = [
r'C:\Users\user\Desktop\XXX架构图.jpg', # 图片
r'C:\Users\user\Desktop\netty-demo.txt', # 文件
r'C:\Users\user\Desktop\在现在这个环境下如何进大厂.mp4' # 视频
]
# 要发送给谁
who = '文件传输助手'
wx.SendFiles(filepath=files, who=who)
# 发送的文件列表
files = [
r'C:\Users\user\Desktop\XXX架构图.jpg', # 图片
r'C:\Users\user\Desktop\netty-demo.txt', # 文件
r'C:\Users\user\Desktop\在现在这个环境下如何进大厂.mp4' # 视频
]
# 要发送给谁
who = '文件传输助手'
wx.SendFiles(filepath=files, who=who)
3.获取消息
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage()
# ['世界', 'hello'], ['SYS', '11:06'], ['SYS', '"世界" 撤回了一条消息'], ['SYS', '11:16'], ['Self', '你好']]
1
2
3
通过type和content可以获取是谁发送的消息以及消息内容
for msg in msgs:
print("type:"+ msg.type + ",content:" + msg.content)
# type:sys,content:昨天 20:28
# type:friend,content:[图片]
# type:sys,content:昨天 20:43
# type:friend,content:ok
# type:self,content:嗯
for msg in msgs:
print("type:"+ msg.type + ",content:" + msg.content)
# type:sys,content:昨天 20:28
# type:friend,content:[图片]
# type:sys,content:昨天 20:43
# type:friend,content:ok
# type:self,content:嗯
sys系统消息
self自己发送的消息
friend朋友发送的消息
time时间消息
recall撤回消息
msg.sender可以获取发送者的名称
使用LoadMoreMessage9()可以加载更多历史消息
# 加载更多历史消息
wx.LoadMoreMessage()
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage()
# 加载更多历史消息
wx.LoadMoreMessage()
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage()
4.保存图片、文件、语音转文字等内容
savepic:是否保存聊天图片
savefile:是否保存聊天文件
savevoice:是否保存聊天语音转文字内容
默认都为false
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage(
savepic = True, # 保存图片
savefile = True, # 保存文件
savevoice = True # 保存语音转文字内容
)
# 获取当前聊天窗口消息
msgs = wx.GetAllMessage(
savepic = True, # 保存图片
savefile = True, # 保存文件
savevoice = True # 保存语音转文字内容
)
5.监听消息
# 监听的消息列表 好友 或 群
listen_list = [
'张三',
'李四',
'王五',
'赵六'
]
# 调用AddListenChat添加监听对象
for i in listen_list:
wx.AddListenChat(who=i)
# 获取监听消息
msgs = wx.GetListenMessage()
for chat in msgs:
one_msgs = msgs.get(chat) # 获取消息内容
# 监听的消息列表 好友 或 群
listen_list = [
'张三',
'李四',
'王五',
'赵六'
]
# 调用AddListenChat添加监听对象
for i in listen_list:
wx.AddListenChat(who=i)
# 获取监听消息
msgs = wx.GetListenMessage()
for chat in msgs:
one_msgs = msgs.get(chat) # 获取消息内容
6.添加好友
from wxauto import WeChat
wx = WeChat()
keywords = '18500000000' # 微信号、手机号、QQ号
addmsg = '你好,我是小Q' # 添加好友的消息
remark = '备注名字' # 备注名,没有则不用设置
tags = ['人机', '朋友'] # 标签列表
# 发起好友申请
wx.AddNewFriend(keywords, addmsg=addmsg, remark=remark, tags=tags)
from wxauto import WeChat
wx = WeChat()
keywords = '18500000000' # 微信号、手机号、QQ号
addmsg = '你好,我是小Q' # 添加好友的消息
remark = '备注名字' # 备注名,没有则不用设置
tags = ['人机', '朋友'] # 标签列表
# 发起好友申请
wx.AddNewFriend(keywords, addmsg=addmsg, remark=remark, tags=tags)
7.接受好友请求
from wxauto import WeChat
wx = WeChat()
new = wx.GetNewFriends()
# [<wxauto New Friends Element at 0x1e95fced080 (张三: 你好,我是xxx群的张三)>,
# <wxauto New Friends Element at 0x1e95fced081 (李四: 你好,我是xxx群的李四)>]
# 获取第一个可接受的新好友对象
new_friend1 = new[0]
print(new_friend1.name) # 获取好友申请昵称
# 张三
print(new_friend1.msg) # 获取好友申请信息
# 你好,我是xxx群的张三
# 接受好友请求,并且添加备注“备注张三”、添加标签wxauto
new_friend1.Accept(remark='备注世界', tags=['world'])
# 切换回聊天页面
wx.SwitchToChat()
from wxauto import WeChat
wx = WeChat()
new = wx.GetNewFriends()
# [<wxauto New Friends Element at 0x1e95fced080 (张三: 你好,我是xxx群的张三)>,
# <wxauto New Friends Element at 0x1e95fced081 (李四: 你好,我是xxx群的李四)>]
# 获取第一个可接受的新好友对象
new_friend1 = new[0]
print(new_friend1.name) # 获取好友申请昵称
# 张三
print(new_friend1.msg) # 获取好友申请信息
# 你好,我是xxx群的张三
# 接受好友请求,并且添加备注“备注张三”、添加标签wxauto
new_friend1.Accept(remark='备注世界', tags=['world'])
# 切换回聊天页面
wx.SwitchToChat()
8.切换到聊天框
# 切换到指定好友的聊天框
who="hello"
wx.ChatWith(who=who)
# 切换到聊天页面
wx.SwitchToChat()'
# 切换到通讯录页面
wx.SwithcToContact()
# 切换到指定好友的聊天框
who="hello"
wx.ChatWith(who=who)
# 切换到聊天页面
wx.SwitchToChat()'
# 切换到通讯录页面
wx.SwithcToContact()
9.获取好友信息
# 获取粗略信息
friend_infos = wx.GetAllFriends()
# [{'nickname': '世界', 'remark': 'world', 'tags': None},
# {'nickname': '你好', 'remark': None, 'tags': ['同事', '朋友']},
# 获取详情信息
friend_details = wx.GetAllFriendsDetail()
# [{'微信号:': 'abc123456',
# '地区:': '上海 浦东新区',
# '备注': '',
# '标签': 'wxauto',
# '共同群聊': '1个',
# '来源': '通过扫一扫添加',
# '昵称': '张三'},
# {'备注': '',
# '企业': '广州融创文旅城',
# '实名': '***',
# '官方商城': '