微信自动回复python脚本

执行条件:ptyhone3环境 

安装库命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pandas uiautomation

文件名:wechat_auto_reply.py

import pandas as pd
import numpy as np
import uiautomation as auto
import time

def find_wechat_window():
    try:
        # 尝试找到微信窗口,这里可能需要根据实际情况调整参数
        wx_window = auto.WindowControl(searchDepth=3, Name='微信')
        if wx_window.Exists(0):
            wx_window.SwitchToThisWindow()
            return wx_window
        else:
            print("未找到微信窗口")
            return None
    except Exception as e:
        print(f"查找微信窗口出错: {e}")
        return None

def get_last_message(wx):
    try:
        # 获取消息列表
        message_list = wx.ListControl(Name='消息').GetChildren()
        if message_list:
            # 读取最后一条消息
            last_msg = message_list[-1].Name
            return last_msg
        else:
            print("消息列表为空")
            return None
    except Exception as e:
        print(f"获取最后一条消息出错: {e}")
        return None

wx = find_wechat_window()
if not wx:
    exit()

# 通过pd读取数据
df = pd.read_csv(r'C:\Users\Administrator\Documents\weChatRobot\AutoBack.csv', encoding='gb18030')
print(df)

# 寻找特定联系人的对话
contact_name = '21day'
conversations = wx.ListControl()
for conversation in conversations.GetChildren():
    if conversation.Name == contact_name:
        conversation.Click(simulateMove=False)
        break

# 死循环接收消息
while True:
    time.sleep(1)  # 避免过于频繁的循环
    last_msg = get_last_message(wx)
    if last_msg:
        # print(f"收到新消息: {last_msg}")
        # 判断关键字
        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:
            try:
                # 将数据输入
                # 替换换行符号
                reply = ar[0].replace('{br}', '\n')
                wx.SendKeys(reply, waitTime=0)
                # 发送消息,回车键
                wx.SendKeys('{Enter}', waitTime=1)
                print(f"回复内容是: {ar[0]}")
            except Exception as e:
                print(f"发送消息出错: {e}")
        # 没有匹配到数据时
        # else:
            # try:
                # wx.SendKeys('不知道你在说什么', waitTime=0)
                # wx.SendKeys('{Enter}', waitTime=0)
            # except Exception as e:
                # print(f"发送默认回复出错: {e}")
    else:
        print("没有新消息")

文件名:AutoBack.csv   文本打开编辑就行

内容如下: 

序号,关键词,回复内容
1,吃的,猪脚饭
2,哈哈,我的

注: 微信窗口得一直打开

### 微信自动回复功能的实现方式 要实现微信自动回复功能,可以采用非官方的第三方库或工具。以下是几种常见的实现方法及其特点: #### 使用 itchat 库 `itchat` 是一个用于 Python 的非官方库,能够帮助开发者快速开发基于微信的功能应用。它通过模拟用户登录微信网页版的方式工作,从而实现了消息接收和发送等功能[^1]。 ```python import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return f"收到您的消息:{msg['Text']}" if __name__ == "__main__": itchat.auto_login(hotReload=True) itchat.run() ``` 上述代码展示了如何利用 `itchat` 实现基本的文字消息自动回复功能。当接收到文字消息时,程序会返回一条带有原消息内容的回复。 --- #### 使用 wxpy 库 `wxpy` 是另一个流行的非官方库,它是基于 `itchat` 开发的更高层次封装版本,提供了更简洁易用的接口[^2]。 ```python from wxpy import Bot, embed bot = Bot() @bot.register() def reply_msg(msg): return f"您发送的消息是:{msg.text}" embed() ``` 这段代码同样实现了简单的自动回复逻辑,其中 `wxpy` 提供了更加直观的方法来注册回调函数并处理消息。 --- #### 基于 pyautogui 和 CnOcr 的方案 除了使用专门针对微信设计的库外,还可以考虑结合其他通用自动化工具完成任务。例如,可以通过 `pyautogui` 控制鼠标键盘输入以及截图识别技术(如 `CnOcr`),构建一套完全自定义化的解决方案[^3]。 这种方法虽然灵活性较高,但由于涉及较多底层操作,复杂度也相应增加。具体流程可能包括但不限于截取聊天窗口图像、解析文本内容、判断触发条件后再执行相应的回应动作等步骤。 --- ### 注意事项 无论选用哪种途径实施该项目,请务必留意以下几点: - **合法性风险**:鉴于此类行为违反了腾讯公司的服务协议条款规定,长期运行可能导致封号等问题发生; - **稳定性考量**:因依赖未授权接口访问机制运作的缘故,在面对目标平台频繁调整安全防护措施的情况下容易失效; 尽管如此,对于学习研究目的而言,适当尝试仍不失为一种有效提升技能水平的好办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值