首页 > 其他分享 >仅用30多行代码实现一个微信AI聊天机器人

仅用30多行代码实现一个微信AI聊天机器人

时间:2024-12-26 09:44:39浏览次数:7  
标签:who AI 微信 30 content api 消息 import wx

前言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个',
# '来源': '通过扫一扫添加',
# '昵称': '张三'},
# {'备注': '',
# '企业': '广州融创文旅城',
# '实名': '***',
# '官方商城': '

标签:who,AI,微信,30,content,api,消息,import,wx
From: https://www.cnblogs.com/hayleeqhl/p/18631931

相关文章

  • SpringBoot+MyBaits实现前后端交互的登录注册
             近期在做实训项目,我负责后端开发部分,刚开始去网上搜了好多教程,也还是不太清楚,最后一点一点学,一点一点调试,功夫不负有心人,最后成功做出来啦,本篇文章将会基于SpringBoot+MyBaits技术实现简单的登录注册功能,代码逻辑不是很难,适合刚开始入门的新手哦。   ......
  • 对话 Project Astra 研究主管:打造通用 AI 助理,主动视频交互和全双工对话是未来重点
      ProjectAstra愿景之一:「系统不仅能在你说话时做出回应,还能在持续的过程中帮助你。」 近期,GoogleDeepMind的YouTube频道采访了GoogleDeepMind研究主管格雷格·韦恩(GregWayne)。 格雷格·韦恩的研究工作为DeepMind的诸多突破性成果做出了重要贡献,涵盖强......
  • 在域控(Domain Controller,DC)上做快照是一种用于备份和恢复的常见操作,尤其是在 Active D
    在域控(DomainController,DC)上做快照是一种用于备份和恢复的常见操作,尤其是在ActiveDirectory环境中。通过创建域控的快照,可以在发生故障时快速恢复到快照时的状态。下面是如何在WindowsServer上创建域控的快照的步骤:1.使用 WindowsServer快照功能在WindowsServer上......
  • hook 微信信息撤回功能
    公众号:泷羽Sec-尘宇安全hook微信信息撤回功能原文地址:https://bbs.kanxue.com/thread-282005.htmb站刷到一位老师分享了hookpc端微信信息撤回功能的视频,跟着动手操作了一遍之后,尝试了一下hookAndroid端的微信,下面分享一下学习过程。视频链接:广东财经大学-信息安全-......
  • 微信防撤回功能
    公众号:泷羽Sec-尘宇安全微信防撤回功能查看微信版本选择插件插件https://pan.quark.cn/s/d25033d81608先查看一下微信的版本:微信左下角–>三个杠–>设置–>关于微信比如我这里是3.9.12.15版本进行WeChatWin.dll替换下载对应版本之后,将插件名字改为WeChatWin.dl......
  • AI领域中的关键词及其对应的产品或技术
    在AI技术领域,有许多关键词对应着不同的产品或技术。本文将详细说明AIdevops、AItest、AIEthics、AIGovernance、FederatedLearning、ExplainableAI、AISecurity和QuantumAI这些关键词对应的产品或技术,其基础原理是什么,这些产品是否已经上市,并提供具体的市场状态。AIdevops......
  • P1306 斐波那契公约数
    P1306斐波那契公约数对于Fibonacci数列:\[f_i=\begin{cases}[i=1]&i\leq1\\f_{i-1}+f_{i-2}&i\gt1\end{cases}\]请求出\(f_n\)与\(f_m\)的最大公约数,即\(\gcd(f_n,f_m)\)。数据规模与约定对于\(100\%\)的数据,保证\(1\l......
  • Chapter 5. How AI can improve Business Process
    AIcanimproveBusinessProcess(customerservice&HR)CustomerServiceWorkloadReduction:Employeeburnoutisasignificantissueincustomerservice.AIAssistants:VirtualAIassistantscandecreasesupportrequestvolumebyproviding24/7suppo......
  • P3066 [USACO12DEC] Running Away From the Barn G
    P3066[USACO12DEC]RunningAwayFromtheBarnG题目描述给定一颗\(n\)个点的有根树,边有边权,节点从\(1\)至\(n\)编号,\(1\)号节点是这棵树的根。再给出一个参数\(t\),对于树上的每个节点\(u\),请求出\(u\)的子树中有多少节点满足该节点到\(u\)的距离不大于\(t\)。......
  • P7302 [NOI1998] 免费的馅饼
    P7302[NOI1998]免费的馅饼题目描述SERKOI最新推出了一种叫做“免费馅饼”的游戏:游戏在一个舞台上进行。舞台的宽度为\(w\)格(从左到右依次用\(1\)到\(w\)编号),游戏者占一格。开始时游戏者可以站在舞台的任意位置,手里拿着一个托盘。下图为天幕的高度为\(4\)格时某一个时......