本文介绍python实现接入deepseek自动回复微信消息,能用但是程序有个bug没有解决,就是捕获最新消息进行回复,感兴趣的读者可以尝试修改(免费下载
)。可能由于时间问题,某些属性会不兼容报错。——本文发布时间2025/4/2,python版本建议3.8
效果展示:
1.引入openai和wxauto
在pycharm中终端输入
pip install openai
pip install wxauto
2. DeepSeek生成API
浏览器搜索DeepSeek,充1块钱就行了,非常够用。后面在程序中把api_key 和base_url替换掉就行。
3.登录微信在后台,然后运行下面程序
from openai import OpenAI
from wxauto import WeChat
import time
import random
class WeChatBot:
def __init__(self):
# 初始化OpenAI客户端
self.client = OpenAI(api_key="你的api_key", base_url="https://api.deepseek.com/v1")
# 初始化微信自动化对象
self.wx = WeChat()
# 设置监听名单(好友或群聊)
self.listen_list = {
# "大姐二姐三妹",
"二姐"
}
# 添加监听对象到微信客户端
for whoItem in self.listen_list:
self.wx.AddListenChat(who=whoItem)
def __ask(self, msg):
try:
# 调用大模型生成回复
response = self.client.chat.completions.create(
model='deepseek-chat',
messages=[
{"role": "system", "content": "你是哪吒,生性顽劣,请用简短口语化回答"},
{"role": "user", "content": msg}
],
stream=False,
max_tokens=50, # 50 tokens ≈ 20-30个汉字
temperature=0.3, # 控制创造性(0~1,越高越随机)
top_p=0.8, # 控制多样性(0~1,越高可选词越多)
# frequency_penalty=0.5, # 降低重复词概率(-2~2,正值抑制重复)
presence_penalty=0.8 # 避免重复话题(-2~2,正值抑制相似内容)
)
return response.choices[0].message.content
except Exception as e:
# 异常处理与默认回复
print(f"API调用失败: {e}") # 可替换为日志记录
return "俺老孙暂时无法回答,请稍后再问!"
def run(self):
wait = random.randint(2, 4) # 消息轮询间隔
while True:
# 获取监听到的新消息
msgs = self.wx.GetListenMessage()
# 遍历所有聊天窗口(可能包含群聊、好友等)
for chat in msgs:
# 获取该窗口的消息列表
msg_list = msgs.get(chat)
# 遍历每条消息
for item in msg_list:
# print(dir(item)) # 打印消息对象的所有属性
if item.type == "friend":
try:
# 打印日志
print(f"接收【{item.sender}】的消息:{item.content}")
# 调用AI生成回复
reply = self.__ask(item.content)
# 发送回复
chat.SendMsg(reply)
print(f"回复【{item.sender}】的消息:{reply}")
except Exception as e:
if "1205" in str(e): # 微信风控错误码
print("触发微信风控,暂停10分钟")
time.sleep(600)
else:
print(f"发送失败: {e}")
time.sleep(wait)
if __name__ == "__main__":
bot = WeChatBot()
bot.run()