免责声明:
本项目只是做出来和朋友玩,不可用于其他事情!!!
如果在使用过程中出现微信强制下线 请停止使用!防止封号!!!
实现效果:
准备阶段
软件准备:
确保你的电脑上已经安装pycharm、python。如果没有的,自己去B站上搜去下载。
deepseek API准备:
在deepseek官网中点击右上角API开放平台
进行登录,冲值10个马力就够玩好久了(你可以选择先不冲,调用阿里云的api也是可以的 这里我放到结尾)。冲值好之后点击左上角API keys
点击创建API key(注意:保护好自己的key不能泄露给其他人)
随便输入一个名字(我这里以WeChat为示例) 然后点击 创建
然后复制好key(以后这个key都不能再复制 机会只有这一次)(我的这个key已经被我删了 仅作为演示)
创建项目
在pycharm中创建python项目
在pycharm中创建项目 点击左下角终端
使用pip清华源下载库
pip清华源
# pip清华源 在这串代码后面加上需要下载的库
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
需要下载wxauto requests pyautogui openai四个库,分别在终端运行以下四行代码
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple wxauto
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple requests
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pyautogui
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple openai
# 如果使用清华源会报错,就使用正常的pip
pip install "你要安装的库"
# 如果openai下载失败,试试这串代码
pip3 install openai -i https://pypi.doubanio.com/simple/
如果出现这种错误情况
我的电脑——>查看——>显示——>隐藏的项目(勾选)appdata这个文件夹是隐藏的 不显示出来找不到
照着这个路径点开C:\Users\(你自己设置的名字)\AppData\Local\Programs\Python\Python313\Scripts然后看到这三个文件 把上面的路径复制下来
照着箭头点开 打开高级系统设置
把刚刚复制的东西粘贴在系统变量path里
如果还是报错 那就更新pip版本(报错在后面有一章专门解决这个问题)
点击右上角设置
按照以下步骤进行安装最新版本(只要点了指定版本 一般都是最新的)
最后 再去运行那四行代码(一行一行的运行)当显示Successfully就表示成功了 (如果对于的库下边还有红线可以选择不管)
敲代码
总代码(复制粘贴就可以用了)
总代码(如果你对代码具体有些什么不感兴趣 这时候你就可以把代码复制粘贴去运行了)
wxauto和openai这俩个库底下还有红色波浪线可以不用管 不影响运行
使用方法:挂在电脑上,会强制调用你的鼠标、键盘输入的位置(很烦),可以使用deepseek闭嘴,deepseek闭嘴0030---->闭嘴30秒 来实现暂时休眠deepseek的功能。
import os
from wxauto import WeChat
import requests
import pyautogui
from openai import OpenAI
import time
def request_deepseek(msg):
Client = OpenAI(
api_key="sk-b6c605ca8e104052a993364814509250",
base_url="https://api.deepseek.com"
)
response = Client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system","content": "你是一个大二的一个帅哥,情场高手,你的任务是让和你对话的人对你产生好感,每段对话尽量不超过20个字"},
{"role": "user", "content": str(msg)},
],
stream=False
)
wx.SendMsg("deepseek回复:\n" + response.choices[0].message.content, listen_list[i])
print("最终回复:")
print(response.choices[0].message.content)
wx = WeChat()
listen_list = ['aaa','bbb','ccc']
while True:
msgs = wx.GetAllNewMessage()
# 判断字典是否为空
if next(iter(msgs.keys()), None) is None:
continue
# 打印字典
print("print0","msgs是:",msgs)
# print0 msgs1是: {'卞锦豪': [['Self', 'deepseek回复:\n deepseek闭嘴10秒'], ['SYS', '以下为新消息'], ['卞锦豪', '你好'],]}
if len(msgs) != 0:
for i in range(len(listen_list)):
wx_name = next(iter(msgs.keys()), None)
if wx_name in listen_list[i] :
# 输出wx_name对应的value值 value值是一个二维列表
print("print2",msgs[listen_list[i]])
# msgs 中获取指定键对应的值,如果键不存在,则返回一个默认值 [](空列表) iter将字典的键转换为一个迭代器 next(..., None) 获取迭代器的第一个值。如果迭代器为空(即字典没有键),则返回默认值 None。
name_value1 = msgs.get(next(iter(msgs.keys()), None), [])
for q in range(len(name_value1)):
print("print3",name_value1[q][0],name_value1[q][1])
if name_value1[q][0]== 'SYS':
continue
if name_value1[q][0]== 'Self':
print("进入self")
msg_content = name_value1[q][1]
if len(msg_content) == 10:
print("进入10")
if msg_content == 'DeepSeek闭嘴' or msg_content == 'deepseek闭嘴':
print("deepseek回复:\n" + 'deepseek已闭嘴')
wx.SendMsg("deepseek回复:\n" + 'deepseek已闭嘴')
time.sleep(180)
continue
if msg_content == 'DeepSeek关机' or msg_content == 'deepseek关机':
break
else:
continue
# 判断输入deepseek闭嘴1111
if len(msg_content) == 14:
print("进入14")
# 获取到前八位字符 字符串切片 并且转换为小写
if msg_content[:8].lower() == 'deepseek':
# 获取到后四位字符 并转换为int
last_num = int(msg_content[-4:])
print(last_num)
wx.SendMsg(f"deepseek回复:\ndeepseek闭嘴{last_num}秒")
time.sleep(last_num)
continue
else:
continue
else:
continue
print("print4",f'{listen_list[i]}: {str(name_value1[q][1])}')
request_deepseek(name_value1[q][1])
else:
print(listen_list[i]+'-->未收到消息')
pyautogui.click(200,160)
详细解析代码
1.导入库
import os
from wxauto import WeChat
import requests
import pyautogui
from openai import OpenAI
import time
2.导入deepseek
在api_key替换为你自己的api 然后把它包装成一个传输 传入一个msg参数就ok了
def request_deepseek(msg):
Client = OpenAI(
api_key="这里替换为你自己获取到的api",
base_url="https://api.deepseek.com"
)
response = Client.chat.completions.create(
model="deepseek-chat",
messages=[
# 这里自定义人格
{"role": "system","content": "你是一个大二的一个帅哥,情场高手,你的任务是让和你对话的人对你产生好感,每段对话不超过20个字"},
{"role": "user", "content": str(msg)},
],
stream=False
)
# wx.SendMsg("思考过程:" + completion.choices[0].message.reasoning_content,listen_list[i])
wx.SendMsg("deepseek回复:\n" + response.choices[0].message.content, listen_list[i])
# print("思考过程:" + completion.choices[0].message.reasoning_content)
print("最终回复:")
print(response.choices[0].message.content)
获取微信窗口 设置监听的好友(照着这个格式把bbb换一下就好了)
wx = WeChat()
listen_list = ['张三','bbb','ccc','ccc']
3.关键监听判断调用deepseek代码
3.1获取微信好友字典
使用msgs = wx.GetAllNewMessage()方法来获取微信好友字典
字典里面 key是好友名字 key对应的value值是一个二维数组(列表)例如{'张三': [['SYS', '以下为新消息'], ['张三', '你好'],['self', '你好']]}表示在张三的聊天框里面 sys(系统) 说 以下为新消息;张三 说 你好;self(自己)说 你好; 就是这样的一个形式。
while True:
msgs = wx.GetAllNewMessage()
# 判断字典是否为空
if next(iter(msgs.keys()), None) is None:
continue
# 打印字典
print("msgs是:",msgs)
# msgs是: {'张三': [['Self', 'deepseek回复:\n deepseek闭嘴10秒'], ['SYS', '以下为新消息'], ['张三', '你好'],]}
3.2获取字典的key
先len(msgs) !=0 判断字典不为空。使用for循环来遍历 listen_list 中的所有监听对象(好友)。使用iter(msgs.keys())获取到字典key值(微信列表中的好友名字)赋值给wx_name。解释:[iter(msgs.keys())将 msgs 的键转换为一个迭代器。next(..., None)从迭代器中获取下一个值]再判断wx_name是否在listen_list列表中,如果不在,进入else "输出好友列表-->未接收到消息",使用pyautogui.click(200,160)方法点击以左上角为坐标原点横向移动160px 纵向移动200px(这里我们是要退出当前聊天页面 点击到其他聊天页面,为了可以获取到新的消息)。如果在我们要监听的好友列表中,我们使用 msgs.get(next(iter(msgs.keys()), None), [])解释:使用get方法来获取到key对应的value值方法来取到key对应的value值(二维列表)并且将获取到的value值赋值给name_value1。
if len(msgs) != 0:
for i in range(len(listen_list)):
wx_name = next(iter(msgs.keys()), None)
if wx_name in listen_list[i] :
# 输出wx_name对应的value值 value值是一个二维列表
print("print2",msgs[listen_list[i]])
# msgs 中获取指定键对应的值,如果键不存在,则返回一个默认值 [](空列表) iter将字典的键转换为一个迭代器 next(..., None) 获取迭代器的第一个值。如果迭代器为空(即字典没有键),则返回默认值 None。
name_value1 = msgs.get(next(iter(msgs.keys()), None), [])
else:
print(listen_list[i]+'-->未收到消息')
pyautogui.click(200,160)
3.3对字典key对于的value值进行判断
使用for循环来对value1进行遍历,打印
进行判断:
如果第q个数组里面第一个数为“SYS”跳出本次循环
如果第q个数组里面第一个数为“Self”则对其进行判断:(我的想法是 输入“Deepseek闭嘴“睡眠180秒,输入”deepseek闭嘴0000“后面有四个数字,把这四个数字转换为int型 睡眠0000这么长的时间)
如果第q个数组里面第二个数的长度为10:则判断是不是deepseek闭嘴 进行sleep 最后使用continue来推出本次循环
如果第q个数组里面第二个数的长度为14:先判断前八位字符是不是deepseek,然后将后四位字符转换为int类型,放到sleep里面,最后使用continue来推出本次循环。
别忘记除了判断”SYS“和”Self“还有其他的 对else进行continue。
最后的最后,print一下,调用一下deepseek的方法就可以实现微信自动回复的功能了。
这样就可以实现deepseek闭嘴,deepseek闭嘴0030---->闭嘴30秒的功能了
那只可以闭嘴,那是不是也要加入关机的功能? 哈哈 我在这里加一下(最后加了一个break的功能实现关机deepseek)前面的总代码没有哦~
for q in range(len(name_value1)):
print("print3",name_value1[q][0],name_value1[q][1])
if name_value1[q][0]== 'SYS':
continue
if name_value1[q][0]== 'Self':
print("进入self")
msg_content = name_value1[q][1]
if len(msg_content) == 10:
print("进入10")
if msg_content == 'DeepSeek闭嘴' or msg_content == 'deepseek闭嘴':
print("deepseek回复:\n" + 'deepseek已闭嘴')
wx.SendMsg("deepseek回复:\n" + 'deepseek已闭嘴')
time.sleep(180)
continue
if msg_content == 'DeepSeek关机' or msg_content == 'deepseek关机':
break
# 判断输入deepseek闭嘴1111
if len(msg_content) == 14:
print("进入14")
# 获取到前八位字符 字符串切片 并且转换为小写
if msg_content[:8].lower() == 'deepseek':
# 获取到后四位字符 并转换为int
last_num = int(msg_content[-4:])
print(last_num)
wx.SendMsg(f"deepseek回复:\ndeepseek闭嘴{last_num}秒")
time.sleep(last_num)
continue
else:
continue
print("print4",f'{listen_list[i]}: {str(name_value1[q][1])}')
request_deepseek(name_value1[q][1])
OK!恭喜你 现在代码已经敲完了 可以登录微信进行实践了
觉得print那些比较烦,可以删了(我是用来做测试的)
微信实践操作
首先,登录好自己的微信,然后运行代码。让你的朋友给你发个消息,你就会得到这样的界面
如果你已经做到这一步了,恭喜你!你成功了!!!
报错问题
openai库下载
尝试使用以下代码来下载
pip3 install openai -i https://pypi.doubanio.com/simple/
WeChat() 报错
微信版本问题,使用3.9.12版本的,最新的4.0.3就会报错
使用阿里云来实现微信机器人
获取阿里云里的deepseek的api
进入阿里云官网 点击控制台,并使用支付宝进行登录
点击左上角三条杠
找到大模型服务平台百炼
进入API调用实例
点击右上角 查看我的API 创建 复制自己的key
代码部分
import os
from wxauto import WeChat
import requests
import pyautogui
from openai import OpenAI
import time
def request_deepseek(msg):
client = OpenAI(
api_key="key", # 直接传递 API Key
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="deepseek-v3",
messages=[
{'role': 'user', 'content': str(msg)}
]
)
# wx.SendMsg("思考过程:" + completion.choices[0].message.reasoning_content,listen_list[i])
wx.SendMsg("deepseek回复:\n" + completion.choices[0].message.content,listen_list[i])
# print("思考过程:")
# print(completion.choices[0].message.reasoning_content)
print("最终回复:")
print(completion.choices[0].message.content)
wx = WeChat()
# msgs = wx.GetAllNewMessage()
# print(msgs)
listen_list = ['aaa','bbb','ccc']
while True:
msgs = wx.GetAllNewMessage()
# print("msgs0是:",msgs)
# 判断字典是否为空
if next(iter(msgs.keys()), None) is None:
continue
# 打印字典
print("print0","msgs是:",msgs)
# print0 msgs1是: {'aaa': [['Self', 'deepseek回复:\n deepseek闭嘴10秒'], ['SYS', '以下为新消息'], ['aaa', '你好'],]}
if len(msgs) != 0:
for i in range(len(listen_list)):
wx_name = next(iter(msgs.keys()), None)
if wx_name in listen_list[i] :
# 输出wx_name对应的value值 value值是一个二维列表
print("print2",msgs[listen_list[i]])
# msgs 中获取指定键对应的值,如果键不存在,则返回一个默认值 [](空列表) iter将字典的键转换为一个迭代器 next(..., None) 获取迭代器的第一个值。如果迭代器为空(即字典没有键),则返回默认值 None。
name_value1 = msgs.get(next(iter(msgs.keys()), None), [])
for q in range(len(name_value1)):
print("print3",name_value1[q][0],name_value1[q][1])
if name_value1[q][0]== 'SYS':
continue
if name_value1[q][0]== 'Self':
print("进入self")
msg_content = name_value1[q][1]
if len(msg_content) == 10:
print("进入10")
if msg_content == 'DeepSeek闭嘴' or msg_content == 'deepseek闭嘴':
print("deepseek回复:\n" + 'deepseek已闭嘴')
wx.SendMsg("deepseek回复:\n" + 'deepseek已闭嘴')
time.sleep(180)
continue
# 判断输入deepseek闭嘴1111
if len(msg_content) == 14:
print("进入14")
# 获取到前八位字符 字符串切片 并且转换为小写
if msg_content[:8].lower() == 'deepseek':
# 获取到后四位字符 并转换为int
last_num = int(msg_content[-4:])
print(last_num)
wx.SendMsg(f"deepseek回复:\ndeepseek闭嘴{last_num}秒")
time.sleep(last_num)
continue
else:
continue
print("print4",f'{listen_list[i]}: {str(name_value1[q][1])}')
request_deepseek(name_value1[q][1])
else:
print(listen_list[i]+'-->未收到消息')
pyautogui.click(200,160)
将里面的listen_list换成你想要监听的好友列表、将api换成你自己的就好了。
这个是免费的 然后这个的功能就是只能一句一句的回应,deepseek官网的那个是可以联系起来的、自定义人格的。
到此为止 谢谢大家
免责说明:
本人只是做一个玩的出来,各位慎用,如果提醒强制下线,停止使用此脚本!!!