前言
首先感谢星浩大佬的wxauto库:https://github.com/cluic/wxauto
wxauto库的官方文档:https://wxauto.loux.cc/docs/intro
wxauto有很多的功能,而且即使 Python 初学者也可以简单上手自动化微信操作。目前已实现很多日常的微信操作的自动化,如自动发送消息、自动添加好友、自动回复、自动获取聊天记录、图片、文件等功能,后续还会根据反馈更新更多功能。
一、准备
安装
pip install wxauto
引入库
from wxauto import WeChat
官方文档里这些非常的详细
二、效果介绍
- 可以对接coze上的任意ai模型也可自己创
- 可以指定群聊
- 用
/
即可召唤ai - 无封号风险
三、接入步骤
首先话不多说,以下是我利用wxauto库写的一个自动回复的程序,免费供大家使用。
import requests
import json
import re
import uuid
import time
from wxauto import WeChat
# 使用 Coze API 获取 AI 生成的回答
def coze_chat(query):
print(f"发送到 Coze 的消息内容: {query}") # 调试信息,打印发送到 Coze 的内容
url = 'https://api.coze.cn/open_api/v2/chat' # Coze API 的 URL
token = '' # 你的 API Token
bot_id = "" # 机器人的 ID
stream = False # 控制是否使用流式返回
# 请求头信息
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
'Accept': '*/*',
'Host': 'api.coze.cn',
'Connection': 'keep-alive'
}
# 请求数据体
data = {
"conversation_id": "123", # 会话 ID,可用于跟踪会话状态
"bot_id": bot_id,
"user": str(uuid.uuid4()), # 使用 UUID 生成唯一的用户标识
"query": query,
"user_photo": None, # 用户照片字段(可选)
"stream": stream # 控制是否是流式返回
}
# 发送请求到 Coze API
try:
response = requests.post(url, headers=headers, data=json.dumps(data))
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"请求错误:{e}")
return "抱歉,获取回复失败。"
response = response.text # 将响应内容转换为字符串
# 解析 API 返回内容
if stream:
answers = extract_answers(response)
else:
answers = extract_answers_non_stream(response)
# 返回解析后的回答
return answers
# 提取流式返回的模型回答内容
def extract_answers(response):
lines = response.split('\n') # 将响应按行分割
answers_parts = []
content_re = re.compile(r'"type":"answer".*?"content":"(.*?)"') # 匹配回答内容的正则表达式
for line in lines:
if line.startswith('data:'): # 检查是否是数据行
match = content_re.search(line) # 查找匹配
if match:
answers_parts.append(match.group(1)) # 提取内容并添加到列表中
# 合并所有部分并返回完整回答
full_answer = ''.join(answers_parts)
return full_answer
# 提取非流式返回的模型回答内容
def extract_answers_non_stream(response):
try:
data = json.loads(response) # 将字符串转换为 JSON 对象
except json.JSONDecodeError as e:
print(f"JSON 解析错误:{e}")
return "抱歉,解析回复失败。"
answers_parts = []
# 遍历返回的消息列表,提取类型为 'answer' 的内容
for message in data.get('messages', []):
if message.get('type') == 'answer':
answers_parts.append(message.get('content', ''))
# 合并所有部分并返回完整回答
full_answer = ''.join(answers_parts)
return full_answer
# 主函数,用于自动回复微信群消息
def main():
wx = WeChat() # 初始化 WeChat 对象
# 设置监听的群聊名称
group_name = ''
# 添加监听对象
wx.AddListenChat(who=group_name, savepic=True)
while True:
# 获取监听的消息
msgs = wx.GetListenMessage()
for chat in msgs:
if chat.who == group_name:
one_msgs = msgs.get(chat) # 获取消息内容
for msg in one_msgs:
if msg.type == 'friend' and msg.content.startswith('/'): # 判断是否为群成员的消息且以 '/' 开头
sender = msg.sender # 获取发送者名称
content = msg.content[1:].strip() # 去掉开头的 '/' 并去除多余空格
print(f'收到 {sender} 的消息:{content}')
# 调用 Coze API 获取回复
response_msg = coze_chat(content)
if response_msg:
# 回复消息,并 @ 发送者
chat.SendMsg(f'@{sender} {response_msg} --此对话由AI生成')
print(f'回复 {sender} 的消息:{response_msg}')
time.sleep(1) # 设置 1 秒查看一次是否有新消息
if __name__ == '__main__':
main()
填写你coze的token
和bot_id
然后再填上你要对话的群聊名称就ok了。
首先进入coze官网:
https://www.coze.cn/home
创建智能体
然后
可以用AI创建你想要的智能体功能
根据需要添加你的插件,工作流程,知识库等
随后点击发布
选中Agent as API 点击配置
添加新令牌
随意命名,权限选中所有,选择所有团队空间
记住令牌,这就是你的token
设置好并记住后返回继续发布。
记住这个id,这个就是你的bot_id
将bot_id和token填入
再填写你要对话的微信群聊
执行后进入这个群聊就ok了
搞定
总结
这是一个非常好用的库,简单易上手,还有很多其他功能待开发。