吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4354|回复: 62
收起左侧

[Python 原创] python接入AI 实现微信自动回复

  [复制链接]
whz1998 发表于 2025-2-25 22:14
本帖最后由 whz1998 于 2025-2-25 22:19 编辑

import numpy as np  # 引入numpy库,目的是将读取的数据转换为列表
from uiautomation import WindowControl  # 引入uiautomation库中的WindowControl类,用来进行图像识别和模拟操作
import requests
import json 
# 绑定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
# 切换窗口
# wx.ListControl()
wx.SwitchToThisWindow()
# 寻找会话控件绑定
hw = wx.ListControl(Name='会话')
# 通过pd读取数据
# df = pd.read_excel(r'C:\Users\whz\Desktop\test.xls')
# print(df)
# 死循环接收消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4)
    # 死循环维持,没有超时报错
    while not we.Exists():
        pass
    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)
        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print(last_msg)
        sess = requests.get(
        ('http://route.showapi.com/60-27?&showapi_appid=102421&userid=userid&showapi_sign=77760de9bbc640f68433718f807b3e42&info=' + last_msg))
        js = sess.text
        js = json.loads(js)
        print('原主人不在机器人自动回复:', js['showapi_res_body']['text'])
        replyMsg='原主人不在机器人自动回复:', js['showapi_res_body']['text']
        result = ' '.join(map(str, replyMsg))
        wx.SendKeys(result.replace('{br}', '{Shift}{Enter}'), waitTime=1)
        # 发送消息 回车键
        wx.SendKeys('{Enter}', waitTime=1)
        # 通过消息匹配检索会话栏的联系人
        wx.TextControl(SubName=result[:5]).RightClick()

但是小心使用 跟我朋友测试还是挺尴尬的

附带大佬给的ai机器人例子
ai例子知乎地址


接入deepseek 应该也没问题 意思应该都差不多  但是语音和图片暂时没法处理,还有电话一类的  希望有大佬指点指点
1114.png

免费评分

参与人数 4吾爱币 +6 热心值 +3 收起 理由
wst2048 + 1 热心回复!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Carinx + 1 + 1 谢谢@Thanks!
xiiye + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qa1008 发表于 2025-2-26 15:38
原API接口太费钱了,给你换成deepseek了,消息处理做了随机延迟
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from uiautomation import WindowControl  # 引入uiautomation库中的WindowControl类,用来进行图像识别和模拟操作
from openai import OpenAI
import time ,random
 
# 绑定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
 
# 切换窗口
wx.SwitchToThisWindow()
 
# 寻找会话控件绑定
hw = wx.ListControl(Name='会话')
 
# 死循环接收消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4)
    
    # 死循环维持,没有超时报错
    while not we.Exists():
        pass
    
    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)
         
        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print(last_msg)
         
        # 调用API获取自动回复
        client = OpenAI(api_key="sk-b472df4fcb8e06aae", base_url="https://api.deepseek.com")
 
        response = client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": "You are a helpful assistant"},
                {"role": "user", "content": last_msg},
            ],
            stream=False
        )
        print(response.choices[0].message.content)
         
        # 获取机器人回复内容
        result = 'Deepseek自动回复:' + response.choices[0].message.content
         
        # 打印自动回复内容
        print(result)
        # 发送消息前加上延时
        ys1=random.randint(0, 5)
        time.sleep(ys1)  # 延时5秒,避免频繁操作
 
        # 发送消息
        wx.SendKeys(result.replace('{br}', '{Shift}{Enter}'), waitTime=1)
        # 延时,给微信系统一点时间处理
        ys2=random.randint(0, 5)
        time.sleep(ys2)  # 再次延时2秒
 
        # 发送回车键
        wx.SendKeys('{Enter}', waitTime=1)
 
        # 通过消息匹配检索会话栏的联系人
        wx.TextControl(SubName=result[:5]).RightClick()
        # 避免过快重复发送,加入时间的延迟
        ys3=random.randint(0, 5)
        time.sleep(ys3)  # 延时5秒,确保操作间隔较长


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
whz1998 + 1 + 1 谢谢@Thanks!

查看全部评分

yuupuu 发表于 2025-2-25 22:24
这玩意频率高了就风控了,也是有封号风险!

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
whz1998 + 1 + 1 用心讨论,共获提升!

查看全部评分

Flanders 发表于 2025-2-26 10:21
优化一下代码,楼主不妨试试过滤一下名称,看会不会屏蔽不想自动回复的一些好友、群
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import numpy as np  # 引入numpy库,目的是将读取的数据转换为列表
from uiautomation import WindowControl  # 引入uiautomation库中的WindowControl类,用来进行图像识别和模拟操作
import requests
import json
import time  # 导入time模块,用于添加延时
 
# 绑定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
 
# 切换窗口
wx.SwitchToThisWindow()
 
# 寻找会话控件绑定
hw = wx.ListControl(Name='会话')
 
# 过滤掉群聊的函数
def is_group_chat(contact_name):
    # 假设群聊的名称包含"工作"、“团队”、"群"等关键词
    group_keywords = ['工作', '团队', '群']
    for keyword in group_keywords:
        if keyword in contact_name:
            return True
    return False
 
# 死循环接收消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4)
     
    # 死循环维持,没有超时报错
    while not we.Exists():
        pass
     
    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)
         
        # 获取当前会话的名字
        contact_name = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print(f"当前会话: {contact_name}")
 
        # 如果是群聊,则跳过自动回复
        if is_group_chat(contact_name):
            print("检测到群聊,跳过自动回复")
            continue
 
        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print(f"收到消息: {last_msg}")
         
        # 调用API获取自动回复
        sess = requests.get(
            ('http://route.showapi.com/60-27?&showapi_appid=102421&userid=userid&showapi_sign=77760de9bbc640f68433718f807b3e42&info=' + last_msg))
         
        js = sess.text
        js = json.loads(js)
         
        # 获取机器人回复内容
        replyMsg = '原主人不在机器人自动回复:' + js['showapi_res_body']['text']
        result = replyMsg
         
        # 打印自动回复内容
        print(f"回复内容: {result}")
         
        # 发送消息前加上延时
        time.sleep(3# 延时3秒,避免频繁操作
 
        # 发送消息
        wx.SendKeys(result.replace('{br}', '{Shift}{Enter}'), waitTime=1)
         
        # 延时,给微信系统一点时间处理
        time.sleep(2# 再次延时2秒
 
        # 发送回车键
        wx.SendKeys('{Enter}', waitTime=1)
 
        # 通过消息匹配检索会话栏的联系人
        wx.TextControl(SubName=result[:5]).RightClick()
 
        # 为了避免过快地重复发送,加入更长时间的延迟
        time.sleep(5# 延时5秒,确保操作间隔较长
 楼主| whz1998 发表于 2025-2-25 22:31
yuupuu 发表于 2025-2-25 22:24
这玩意频率高了就风控了,也是有封号风险!

我还真没试过 就运行了几分钟我就关了 接的这个AI 回答有点脑残
深爱成瘾 发表于 2025-2-26 08:05
yuupuu 发表于 2025-2-25 22:24
这玩意频率高了就风控了,也是有封号风险!

回复太频繁了吧?
xgzhsd 发表于 2025-2-26 08:31
showapi_sign 咋获取到
anning666 发表于 2025-2-26 08:40
这是微信电脑版吗?安卓版可否搞个玩玩?
renhuangdou 发表于 2025-2-26 09:05
可以换一个接入的ai吗?
Flanders 发表于 2025-2-26 10:04
yuupuu 发表于 2025-2-25 22:24
这玩意频率高了就风控了,也是有封号风险!

import numpy as np  # 引入numpy库,目的是将读取的数据转换为列表
from uiautomation import WindowControl  # 引入uiautomation库中的WindowControl类,用来进行图像识别和模拟操作
import requests
import json
import time  # 导入time模块,用于添加延时

# 绑定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)

# 切换窗口
wx.SwitchToThisWindow()

# 寻找会话控件绑定
hw = wx.ListControl(Name='会话')

# 死循环接收消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4)
   
    # 死循环维持,没有超时报错
    while not we.Exists():
        pass
   
    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)
        
        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print(last_msg)
        
        # 调用API获取自动回复
        sess = requests.get(
            ('http://route.showapi.com/60-27?&showapi_appid=102421&userid=userid&showapi_sign=77760de9bbc640f68433718f807b3e42&info=' + last_msg))
        
        js = sess.text
        js = json.loads(js)
        
        # 获取机器人回复内容
        replyMsg = '原主人不在机器人自动回复:' + js['showapi_res_body']['text']
        result = replyMsg
        
        # 打印自动回复内容
        print(result)
        
        # 发送消息前加上延时
        time.sleep(5)  # 延时5秒,避免频繁操作

        # 发送消息
        wx.SendKeys(result.replace('{br}', '{Shift}{Enter}'), waitTime=1)
        
        # 延时,给微信系统一点时间处理
        time.sleep(2)  # 再次延时2秒

        # 发送回车键
        wx.SendKeys('{Enter}', waitTime=1)

        # 通过消息匹配检索会话栏的联系人
        wx.TextControl(SubName=result[:5]).RightClick()

        # 避免过快重复发送,加入时间的延迟
        time.sleep(5)  # 延时5秒,确保操作间隔较长

回复发送前后加上一些延时,会不会减少风控的情况
Flanders 发表于 2025-2-26 10:09
但是小心使用 跟我朋友测试还是挺尴尬的
得找个没啥好友的wx号测试,要不回复到工作群可不好
xxc99 发表于 2025-2-26 10:13
收藏支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-6-10 03:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表