Skip to content

实现简单的微信自动回复功能

研究了一下简单的自动回复功能,代码如下。其中存放回复内容的 csv 格式如下:

序号关键词回复内容
1你好你好
2早上好早上好
3哈哈哈哈呵呵呵呵
4再见明天见

代码

python
import pandas as pd
import numpy as np

from uiautomation import WindowControl

wx = WindowControl(
    Name='微信'
)

print(wx)

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

# while 循环接受消息
while True:
    # 寻找未读的消息
    we = hw.TextControl(searchDepth=4)
    while not we.Exists(0):
        pass
    print('寻找未读的消息',we)
    # 假如存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)
        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        print('读取最后一条消息',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:
            # 输入数据并自动换行
            wx.SendKeys(ar[0].replace('{br}','{Shift}{Enter}'),waitTime=0)
            # 发送
            wx.SendKeys('{Enter}',waitTime=0)
            # 通过消息匹配检索会话框的联系人
            # wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 无匹配时
        else:
            wx.SendKeys('不好意思,我没有理解你的意思',waitTime=0)
            wx.SendKeys('{Enter}',waitTime=0)
            # wx.TextControl(SubName=last_msg[:5]).RightClick()