吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11787|回复: 83
上一主题 下一主题
收起左侧

[Python 转载] Python自动化实现微信自动回复(关键词自动回复)

   关闭 [复制链接]
跳转到指定楼层
楼主
yuupuu 发表于 2022-9-9 15:06 回帖奖励
本帖最后由 yuupuu 于 2022-9-9 15:09 编辑

微信自动回复其实有很多实现的办法,例如ipad协议、Hook微信是比较常见的,ipad协议价格昂贵不适合个人使用,Hook微信因为是拦截内存,具有封号的风险,虽然风险比较小,但这个问题仍然存在,而且Hook微信依赖版本,一旦版本上升级又得重新去写,除非你自己一直保持这个版本的使用。

最近在学习自动化,于是想拿微信来练练手,所以这边就做了一个自动回复的小功能,不过这个还是有一定的问题的:

1、需要windows保持开机
2、需要微信保持在前台显示

代码

[Python] 纯文本查看 复制代码
import pandas as pd
import numpy as np
from uiautomation import WindowControl, MenuControl
import win32gui
import win32con
import pyautogui

# 获取窗口句柄并打开窗口
def getHwnd():
        hwnd = win32gui.FindWindow('WeChatMainWndForPC','微信')
        win32gui.ShowWindow(hwnd, win32con.SW_SHOWMINIMIZED)
        win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
        win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
        win32gui.SetForegroundWindow(hwnd)
        return hwnd

# 复位(自动回复之后自动点击消息列表第二个聊天窗口)
def fuwei(hwnd):
        left, top, right, bottom = win32gui.GetWindowRect(hwnd)
        leftpoint = left+155
        toppoint = top+150
        pyautogui.moveTo(leftpoint, toppoint)
        pyautogui.click()
        return '已复位'

getHwnd()
wx = WindowControl(Name="微信")
wx.SwitchToThisWindow()
hw = wx.ListControl(Name="会话")

# 持续循环监听未读消息
while True:
        we = hw.TextControl(searchDepth=4)
        # 如果存在未读消息
        if we.Name:
                we.Click(simulateMove=False)
                # 获取当前最后一条消息
                last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
                if last_msg == '你好':
                        wx.SendKeys('你好,才是真的好{ENTER}')
                        fuwei(getHwnd())
                elif last_msg == '123':
                        wx.SendKeys('456{ENTER}')
                        fuwei(getHwnd())
                elif last_msg == '测试':
                        wx.SendKeys('测试成功{ENTER}')
                        fuwei(getHwnd())
                else:
                        wx.SendKeys('无法匹配{ENTER}')
                        fuwei(getHwnd())


实现思路

实现起来也是极其容易的,使用uiautomation这个库来识别微信电脑版的控件内容,通过持续循环来检测消息列表是否存在未读消息,如果存在未读消息,那么就自动点击进入这个消息的窗口,然后检索窗口最后一条消息,检索自动回复的关键词库是否有这个关键词,如果存在此关键词,则直接回复。


视频演示

https://share.weiyun.com/A3lxVd8B


比较粗糙,主要是分享一下实现原理,以后在自动化学习这一块熟练了我再做个有界面的比较稳定的工具出来~

免费评分

参与人数 21吾爱币 +19 热心值 +19 收起 理由
jianggu + 1 我很赞同!
mengyu3364 + 1 + 1 我很赞同!
lj800827 + 3 + 1 好兄弟
myfx10 + 1 谢谢@Thanks!
menoooooos + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
BCFQ + 1 + 1 谢谢@Thanks!
johnversion + 1 + 1 我很赞同!
ganger + 1 谢谢@Thanks!
lawayer + 1 + 1 热心回复!
likebbs + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bjznhxy + 1 + 1 谢谢@Thanks!
vinafule + 1 热心回复!
1045837055lucy + 1 这个非常好
lz6905 + 1 + 1 谢谢@Thanks!
G337 + 1 我很赞同!
catflyinsky + 1 + 1 我很赞同!
ingdear + 1 + 1 牛,可惜不会PY
我的睡公主 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
我爱猫哥 + 1 + 1 我很赞同!
为之奈何? + 1 + 1 我很赞同!
rare + 2 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

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

推荐
hackerxj 发表于 2023-5-6 01:05
leonis777 发表于 2022-9-12 14:17
测试了一下可用,但有问题运行一会儿就出错退出,出错信息如下:

那是因为这个代码并不完善,对查找元素未进行异常抛出处理, 且窗口最小化或不在前置的情况下,怎么复位也没有进行处理 。
推荐
leonis777 发表于 2022-9-12 14:17
测试了一下可用,但有问题运行一会儿就出错退出,出错信息如下:


2022-09-12 14:13:08.116 main.py[35] <module> -> Find Control Timeout(10s): {ControlType: TextControl}
Traceback (most recent call last):
  File "main.py", line 35, in <module>
    if we.Name:
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomation\uiautomation.py", line 6087, in Name
    return self.Element.CurrentName or ''   # CurrentName may be None
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomation\uiautomation.py", line 6223, in Element
    self.Refind(maxSearchSeconds=TIME_OUT_SECOND, searchIntervalSeconds=self.searchInterval)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomation\uiautomation.py", line 6474, in Refind
    raise LookupError('Find Control Timeout({}s): {}'.format(maxSearchSeconds, self.GetSearchPropertiesStr()))
LookupError: Find Control Timeout(10s): {ControlType: TextControl}
推荐
shalijie 发表于 2022-9-30 02:55
推荐
DIGI 发表于 2022-9-9 15:22
我最近也在考虑如何用uiautomation做微信自动化回复,您的思路可以借鉴,感谢分享!
3#
sgw1970 发表于 2022-9-9 15:37
会不会被官方检测到封号?
4#
极客3C 发表于 2022-9-9 15:42
可以啊,这个不容易被微信检测到
5#
rorodesheng 发表于 2022-9-9 15:46
操作软件,不拦截,不要操作过快,安全
6#
yhh199375 发表于 2022-9-9 15:48
谢谢分享
7#
cheny12120 发表于 2022-9-9 15:50
看着很好玩的样子
8#
 楼主| yuupuu 发表于 2022-9-9 16:11 |楼主
sgw1970 发表于 2022-9-9 15:37
会不会被官方检测到封号?

不会,因为是模拟点击,解析UI控件内容。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lj800827 + 1 + 1 我很赞同!

查看全部评分

9#
ingdear 发表于 2022-9-9 17:18
牛,可惜不会PY
10#
El28PoJie 发表于 2022-9-9 17:49
厉害…谢谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 03:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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