自动回复微信代码小练

#!/usr/bin/python3
# -*- coding: utf-8 -*-
##uiautomation 要使用C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\inspect.exe 来检查控件,下面的listcontrol等都通过inspect.exe查找类型

import pandas as pd
import numpy as np

from uiautomation import WindowControl, MenuControl


# 绑定微信主窗口
wx = WindowControl(
    Name='微信',
    # searchDepth=1 #搜索深度是1
)

# 切换窗口
wx.SwitchToThisWindow()
# 寻找会话控件绑定
hw = wx.ListControl(Name='会话') ##通过inspect可以找到“会话”ControlType类型是UIA_ListControlTypeId因此使用ListControl查找到期类型,获取句柄
# 通过pd读取数据
df = pd.read_csv('回复数据.csv', encoding='gb18030')
print("df1 df2:", df['回复内容'], df['关键词'])

input("暂停")
# 死循环接受消息
while True:
    # 从查找未读消息
    we = hw.TextControl(searchDepth=4) ##从“会话”子表开始查找,搜索深度是4,ControlType类型是UIA_TextControlTypeId,因此使用TextControl搜索,这里是如何搜索到最新消息的,不清楚

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

    # 存在未读消息
    if we.Name:
        # 点击未读消息
        we.Click(simulateMove=False)  #这里点一下就没有未读消息了

        # 读取最后一条消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name   ##  wx.ListControl(Name='消息').GetChildren()会搜索到最新消息所在框的所有消息列表;最后一个是未读消息
        # 判断关键字
        msg = df.apply(lambda x: x['回复内容'] if x['关键词'] in last_msg else None, axis=1) ##apply是pandas的常用函数,按行按照lamba函数匹配并返回x['回复内容'],azis=1是按行,否则按列。
        # 数据筛选,移除空数据
        msg.dropna(axis=0, how='any', inplace=True) #函数用于删除DataFrame或Series中的缺失值(默认为NaN), axis=0:表示沿着Series的长度方向;
        # how='any':这个参数决定了如何识别包含缺失值的行(或元素)。inplace=True:这个参数决定了操作是否直接在原始数据上进行。如果inplace=True,则直接在msg上修改,不返回新的Series;


        # 做成列表
        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()

自动回复.csv :

序号,关键词,回复内容
1,你好,我不好
2,哈哈哈,呵呵呵
3,告辞,好的
4,时间上最好的语言,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值