微信留言自动回复(Python实现)

简介: 本项目旨在使用Python与Windows GUI自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息

本项目旨在使用PythonWindows GUI自动化工具来自动化微信的操作,作用为读取未读消息、根据关键词回复消息。以下是对代码的详细解释,文章后面会附有本项目完整代码:

  1. 导入库:
    • pandasnumpy:用于数据处理。
    • uiautomation:用于Windows GUI自动化。
  2. 绑定微信主窗口:
    • 创建一个WindowControl对象,尝试通过名称'微信'找到微信的主窗口。
  3. 切换到微信窗口:
    • 使用SwitchToThisWindow()方法将焦点切换到微信窗口。
  4. 读取回复数据:
    • 使用pandas的read_csv方法读取一个名为'回复数据.csv'的文件,其中包含关键词和对应的回复内容。
  5. 死循环接受消息:
    • 使用一个无限循环来不断检查是否有新的未读消息。
  6. 查找未读消息:
    • 在微信的中查找未读消息。
  7. 处理未读消息:
    • 当检测到未读消息时,点击它。
    • 读取最后一条消息的内容。
    • 使用pandas的apply方法遍历'回复数据.csv'中的每一行,检查关键词是否存在于最后一条消息中。如果存在,则返回对应的回复内容。
    • 将匹配到的回复内容转换为列表。
  8. 发送回复:
    • 如果找到了匹配的回复内容,则将其发送到聊天窗口,并发送一个回车键以发送消息。

项目完整源码

import pandas as pd
import numpy as np
from uiautomation import WindowControl, MenuControl

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

# 切换窗口
wx.SwitchToThisWindow()
# 寻找会话控件绑定
hw = wx.ListControl(Name='会话')
# 通过pd读取数据
df = pd.read_csv('回复数据.csv', encoding='gb18030')

# 死循环接受消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4)

    # 死循环维持,没有超时报错
    while not we.Exists(0):
        pass

    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)

        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        # 判断关键字
        msg = df.apply(lambda x: x['回复内容'] if x['关键词'] in last_msg else None, axis=1)
        # 数据筛选,移除空数据
        msg.dropna(axis=0, how='any', inplace=True)
        # 做成列表
        ar = np.array(msg).tolist()

        # 能够匹配到数据时
        if ar:
            # 将数据输入
            # 替换换行符号
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=0)
            # 发送消息
            wx.SendKeys('{Enter}', waitTime=0)
            # 通过消息匹配检索会话栏的联系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 没有匹配到数据时
        else:
            wx.TextControl(SubName=last_msg[:5]).RightClick()

注意: 本项目优缺点

优点:

  1. 自动化:代码能够自动检测未读消息,并根据预设的关键词自动回复,减少了人工操作的繁琐性。
  2. 灵活性:通过读取CSV文件,可以灵活地设置多个关键词和对应的回复内容,便于管理。
  3. 可扩展性:可以通过修改代码来添加更多功能,如隐藏会话、处理图片消息等。
  4. 高效性:对于大量重复性的消息处理任务,自动化能够显著提高效率。

缺点:

  1. 稳定性:自动化脚本可能受到微信界面变化、更新或网络波动等因素的影响,容易运行不稳定或出错。
  2. 安全性:使用自动化脚本处理微信消息可能存在一定的安全风险,如被黑客利用进行恶意操作。
  3. 依赖性:代码依赖于uiautomation库和pandas库,如果环境中没有这些库,代码将无法运行。
  4. 用户体验:自动化回复可能无法像人工回复那样灵活和个性化,可能会影响用户体验。
  5. 维护成本:随着微信版本的更新和功能的增加,可能需要不断修改代码以保持兼容性,增加了维护成本。
  6. 反作弊机制:微信有自己的反作弊机制,频繁或不合理的自动操作可能触发这些机制,导致账号被封禁或限制。
  7. 数据隐私:处理个人或敏感信息时,需要特别注意数据隐私和安全性问题,避免泄露用户信息。
  8. 错误处理:如遇到无法识别的消息或无法找到控件时,可能会导致程序崩溃或陷入死循环。
目录
相关文章
|
18天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
3月前
|
小程序 API 开发工具
使用python 实现微信签到提醒功能
【9月更文挑战第4天】使用python 实现微信签到提醒功能
82 2
|
7月前
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
294 0
|
6月前
|
Python
用Python实现QQ/微信消息轰炸
用Python实现QQ/微信消息轰炸
|
6月前
|
Python 数据格式
使用Python批量处理微信榜单数据
使用Python批量处理微信榜单数据
|
7月前
|
人工智能 算法 API
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
111 0
【Python+微信】【企业微信开发入坑指北】0. 创建自建应用并接入自己的服务
|
7月前
|
开发工具 Python
90行python代码让微信开屏地球转起来,太酷了!
90行python代码让微信开屏地球转起来,太酷了!
|
7月前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
160 0
|
7月前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
310 0
|
7月前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
272 0