系列文章目录
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、实现细节
- 1. 主动发消息
- 2. 自动回复
- 3.调用AI
- 二、效果截图
- 总结
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、实现细节
- 1. 主动发消息
- 2. 自动回复
- 3.调用AI
- 二、效果截图
- 总结
前言
上一章写道,使用wxauto轻松实现微信自动化操作,今天做一些探索,结合通义千问,实现与微信好友的聊天。注意本文只做技术探索,请勿用于不道德的事情,对微信好友进行骚扰。
一、实现细节
1. 主动发消息
启动后给好友发送消息,然后调用自己编写的自动回复消息函数。
import time
from wxauto import *
import requests
import json
# 获取当前微信客户端
wx = WeChat('cn')
if __name__ == "__main__":
# 启动程序后,先给好友发送消息
wx.SendMsg('嘿,小伙子,别摸鱼了','张三')
time.sleep(1)
wx.SendMsg('那么认真干什么','张三')
time.sleep(1)
wx.SendMsg('看来是有活干了','张三')
# 调用回复函数
auto_reply()
2. 自动回复
定义一个函数,用于自动回复消息,首先通过GetAllMessage取出与好友的聊天记录,注意GetAllMessage消息包含好友发给自己和自己发给好友的,所以通过filter函数过滤出好友发给自己的消息赋值给filterMsgs,然后取出最后一条赋值给lastContent变量。写一个循环,每5秒钟读取一次消息。代码如下:
#自动回复消息
def auto_reply():
who = '张三'
# 获取聊天记录
msgs = wx.GetAllMessage(who,True)
# 过滤出与指定好友相关的消息
filterMsgs = list(filter(lambda x: x[0] == who, msgs))
# 取出最后的一条消息
msg = filterMsgs[len(filterMsgs)-1]
lastContent=msg[1]
while True:
msgs = wx.GetAllMessage(who,True)
filterMsgs = list(filter(lambda x: x[0] == who, msgs))
msg = filterMsgs[len(filterMsgs)-1]
# 最后一条消息不一致时发送回复消息
if(lastContent!=msg[1]):
lastContent=msg[1]
aiMsg = callAI(lastContent)
wx.SendMsg(aiMsg,who)
time.sleep(5) # 每隔5秒检查一次新消息
3.调用AI
这里调用了一个通义千问的本地化接口,将好友回复的消息传给大模型,再将大模型返回的内容发送给好友,可自行更换成其他GPT接口。
#定义调用AI接口函数
def callAI(msg):
url = "http://192.168.5.124:8090/v1/chat/completions"
payload = json.dumps({"model": "qwen2:72b","messages": [{"role": "system","content": "你是一个智能客服,可以陪人聊天,不能说自己是机器人或者程序,偶尔喜欢开开玩笑,打击别人,回复消息要简短,1至2句话"},{"role": "user","content":msg}],"stream": False})
headers = {'Content-Type': 'application/json'}
response = requests.request("POST", url, headers=headers, data=payload)
jsonData = json.loads(response.text)
content = jsonData['choices'][0]['message'].get('content')
return content
二、效果截图
总结
以上就是wxauto的学习使用,并和AI大模型进行了结合,完成消息的自动回复。由于本人才开始学python,水平有限,如果大佬有更好的方法,望不吝赐教。原创不易,欢迎点赞关注,感谢支持。