微信留言自动回复(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. 错误处理:如遇到无法识别的消息或无法找到控件时,可能会导致程序崩溃或陷入死循环。
目录
相关文章
|
XML Java 应用服务中间件
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)(一)
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
504 0
|
6月前
|
XML Go 数据格式
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
400 0
|
IDE 开发工具 Python
10分钟教你用Python实现微信自动回复
10分钟教你用Python实现微信自动回复
3038 0
10分钟教你用Python实现微信自动回复
|
XML Java 数据格式
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)(二)
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
290 0
关于如何让微信公众号具有留言功能
关于如何让微信公众号具有留言功能
513 0
|
存储 JSON 小程序
unicloud云函数开发微信客服消息自动回复图片消息(完整步骤)
unicloud云函数开发微信客服消息自动回复图片消息(完整步骤)
415 0
unicloud云函数开发微信客服消息自动回复图片消息(完整步骤)
|
Web App开发 SQL 搜索推荐
知网“哭穷”:赔不起 1200 亿;微信公众号文章留言显示 IP 属地;程序员延寿指南霸榜 GitHub;联想高层大降薪|架构周报
本周架构视点:知网“哭穷”:赔不起 1200 亿;微信公众号文章留言显示 IP 属地;程序员延寿指南霸榜 GitHub;联想高层大规模降薪;网易云音乐起诉腾讯音乐;GitHub 弃用 io;ARM 安谋中国 430 多名员工联名签署公开信,反对软银夺权;Firefox:我们不会卖给亿万富翁
167 0
知网“哭穷”:赔不起 1200 亿;微信公众号文章留言显示 IP 属地;程序员延寿指南霸榜 GitHub;联想高层大降薪|架构周报
|
JSON 机器人 API
Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
639 0
Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
|
JSON 机器人 API
30行代码实现微信自动回复机器人
很多朋友对itchat非常感兴趣,今天下午又学到了itchat另一种有趣的玩法---微信自动回复机器人。
8979 0
wordpress新留言微信提醒
wordpress新留言微信提醒 功能了解 用户留言以后,微信收到提醒及留言内容,可以随时掌握动态。查看详细内容
1068 0