亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息)

 更新時(shí)間:2023年09月22日 14:56:13   作者:専心  
這篇文章主要介紹了Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息),我們使用的第三方包是UIAutomation,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

一.效果展示

二.前言介紹

我們使用的第三方包是:UIAutomation

UIAutomation的簡(jiǎn)介:UIAutomation 是一種自動(dòng)化測(cè)試框架,它可以模擬用戶在應(yīng)用程序圖形用戶界面上的操作,并提供對(duì)應(yīng)用程序界面的元素的完整訪問(wèn)。該框架最初由 Microsoft 開(kāi)發(fā),旨在為 Microsoft Windows 平臺(tái)上的應(yīng)用程序自動(dòng)化測(cè)試提供一種標(biāo)準(zhǔn)化的方法。UIAutomation 框架允許測(cè)試人員編寫(xiě)自動(dòng)化測(cè)試腳本,以便在應(yīng)用程序的不同版本和環(huán)境中對(duì)其進(jìn)行可靠的測(cè)試。這種自動(dòng)化測(cè)試方法可以提高測(cè)試的速度和準(zhǔn)確性,并減少了人工測(cè)試的負(fù)擔(dān)。

總之UIAutomation的功能還是非常強(qiáng)大的,我們這次拿他來(lái)小試牛刀

三.進(jìn)入正題

1.需要用到的包

我們要實(shí)現(xiàn)對(duì)收到的信息進(jìn)行分析判斷,我們首先需要將文本內(nèi)容存儲(chǔ)到本地,我們這次使用的是:csv文件,就是Excel文件,所以我們要解析對(duì)應(yīng)的文件,就需要安裝對(duì)應(yīng)的包。

安裝UIAutomation

pip install uiautomation

安裝pandas包,用來(lái)讀取csv數(shù)據(jù)

pip install pandas

安裝numpy包,目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表

pip install numpy

2.下面進(jìn)入到代碼的部分

2.1導(dǎo)入所需要用到的包

import numpy as np  # 引入numpy庫(kù),目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表
import pandas as pd  # 引入pandas庫(kù),用來(lái)讀取csv數(shù)據(jù)
from uiautomation import WindowControl  # 引入uiautomation庫(kù)中的WindowControl類,用來(lái)進(jìn)行圖像識(shí)別和模擬操作

2.2定義微信窗口控件 

wx = WindowControl(
    Name='微信',
    # searchDepth=1
)

這里我們定義了一個(gè)窗口控件WX,它表示的是微信應(yīng)用的主窗口。通過(guò) WindowControl 類的構(gòu)造函數(shù),傳遞給它窗口的名稱 Name=‘微信’,它會(huì)在屏幕上查找并綁定微信應(yīng)用的主窗口。也可以使用  searchDepth  參數(shù)來(lái)設(shè)置搜索窗口控件的深度。

2.3調(diào)用尋找微信控件的方法

wx.ListControl()
wx.SwitchToThisWindow()

這里使用了wx.ListControl()函數(shù),它的作用是尋找窗口控件中的會(huì)話列表。然后調(diào)用wx.SwitchToThisWindow()函數(shù),將微信應(yīng)用切換到當(dāng)前窗口,也就是將微信界面顯示到最上層。

2.3綁定窗口的會(huì)話列表控件并讀取數(shù)據(jù)

hw = wx.ListControl(Name='會(huì)話')
df = pd.read_csv('回復(fù)數(shù)據(jù).csv', encoding='GBK')

這里獲取綁定窗口的會(huì)話列表控件,并將其賦值給  hw ,在后續(xù)代碼中使用。然后使用 pandas 庫(kù)中的  read_csv()  函數(shù)讀取名為“回復(fù)數(shù)據(jù).csv”的 csv 文件,并設(shè)置編碼格式為 GBK,將讀取到的數(shù)據(jù)存儲(chǔ)在 pandas 的 DataFrame 對(duì)象  df  中。

可以看到此時(shí)的數(shù)據(jù)就是一個(gè)列表,就跟excel表格一樣

 在編譯器中看到的文件中的數(shù)據(jù)是這樣的:

2.4使用while True:死循環(huán)監(jiān)聽(tīng)信息

while True:
    # 獲取未讀消息控件we
    we = hw.TextControl(searchDepth=4)
    # 死循環(huán)直到獲取未讀消息
    while not we.Exists():
        pass

這里使用了 while循環(huán),一直監(jiān)聽(tīng)微信群或私聊中的消息。當(dāng)有新消息出現(xiàn)時(shí),獲取未讀消息控件,并使用 while循環(huán)等待,直到獲取到未讀消息為止。serchDepth=4是表示我們只監(jiān)聽(tīng)最上面的四個(gè)好友或群聊

2.5獲取最新的信息

last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name

在上面的 while 循環(huán)中,如果有新消息,就會(huì)執(zhí)行這行代碼,通過(guò)  wx.ListControl()  函數(shù)獲取最新一條消息的窗口控件,將其名字存儲(chǔ)到  last_msg  變量中。注意我們這里只會(huì)設(shè)置了只會(huì)獲取到最后一次信息,如果想修改只要修改下標(biāo)即可

2.6進(jìn)入循環(huán)做的一些操作

  # 存在未讀消息
    if we.Name:
        # 點(diǎn)擊未讀消息
        we.Click(simulateMove=False)
        # 讀取最后一條消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        # 判斷關(guān)鍵字
        msg = df.apply(lambda x: x['回復(fù)內(nèi)容'] if x['關(guān)鍵詞'] in last_msg else None, axis=1)
        print(msg)
        # 數(shù)據(jù)篩選,移除空數(shù)據(jù)
        msg.dropna(axis=0, how='any', inplace=True)
        # 做成列表
        ar = np.array(msg).tolist()

上面的代碼首先是使用wc.Click()點(diǎn)擊事件,點(diǎn)擊到未讀信息的用戶對(duì)話框中,使用  apply()  函數(shù)從讀取到的 csv 文件中查找是否包含  last_msg  中的關(guān)鍵詞。該函數(shù)使用了給定的 lambda 函數(shù),對(duì)  df  DataFrame 表格中的每一行進(jìn)行遍歷,并返回符合條件的行,然后篩選出數(shù)據(jù),使用  dropna()  函數(shù)刪除無(wú)效數(shù)據(jù)(即值為 None 的行),利用  np.array()  函數(shù)將 DataFrame 對(duì)象轉(zhuǎn)換為 numpy 數(shù)組,再使用  tolist()  函數(shù)將其轉(zhuǎn)換為 Python 列表。將處理后的列表存儲(chǔ)在名為  ar  的變量中。

2.7回復(fù)信息

    # 能夠匹配到數(shù)據(jù)時(shí)
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號(hào)
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=0)
            # 通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒(méi)有匹配到數(shù)據(jù)時(shí)
        else:
            wx.SendKeys('我不理解你什么意思', waitTime=1)
            wx.SendKeys('{Enter}', waitTime=0)
            wx.TextControl(SubName=last_msg[:5]).RightClick(10)

 上面就是回復(fù)信息了,wx.SendKeys(‘{Shift}{Enter}’)就是將ar列表中的數(shù)據(jù)輸入到對(duì)話框中,waitTime是設(shè)置它的等待時(shí)間,wx.SendKeys'{Enter}'就是響應(yīng)回車鍵,將信息發(fā)送出去,waitTime也是等待時(shí)間,wx.TextControl(SubName=ar[0][:5]).RightClick()的作用就是通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人,也就是實(shí)現(xiàn)一個(gè)鼠標(biāo)右擊功能:

  • wx.TextControl()  函數(shù)用于查找微信窗口中的文本框控件;
  • SubName  參數(shù)用于指定控件的子名稱,即控件的標(biāo)簽名稱;
  • ar[0][:5]  是一個(gè)字符串,它是通過(guò)某種方式獲取的,用于指定要右鍵單擊的文本在文本框中的位置;
  • RightClick()  方法模擬鼠標(biāo)右鍵單擊事件,即在指定的文本位置上單擊鼠標(biāo)右鍵。

四:完整代碼

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import numpy as np  # 引入numpy庫(kù),目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表
import pandas as pd  # 引入pandas庫(kù),用來(lái)讀取csv數(shù)據(jù)
from uiautomation import WindowControl  # 引入uiautomation庫(kù)中的WindowControl類,用來(lái)進(jìn)行圖像識(shí)別和模擬操作
# 綁定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
# 切換窗口
wx.ListControl()
wx.SwitchToThisWindow()
# 尋找會(huì)話控件綁定
hw = wx.ListControl(Name='會(huì)話')
# 通過(guò)pd讀取數(shù)據(jù)
df = pd.read_csv('回復(fù)數(shù)據(jù).csv', encoding='GBK')
print(df)
# 死循環(huán)接收消息
while True:
    # 從查找未讀消息
    we = hw.TextControl(searchDepth=4)
    # 死循環(huán)維持,沒(méi)有超時(shí)報(bào)錯(cuò)
    while not we.Exists():
        pass
    # 存在未讀消息
    if we.Name:
        # 點(diǎn)擊未讀消息
        we.Click(simulateMove=False)
        # 讀取最后一條消息
        last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
        # 判斷關(guān)鍵字
        msg = df.apply(lambda x: x['回復(fù)內(nèi)容'] if x['關(guān)鍵詞'] in last_msg else None, axis=1)
        print(msg)
        # 數(shù)據(jù)篩選,移除空數(shù)據(jù)
        msg.dropna(axis=0, how='any', inplace=True)
        # 做成列表
        ar = np.array(msg).tolist()
        # 能夠匹配到數(shù)據(jù)時(shí)
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號(hào)
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=1)
            # 通過(guò)消息匹配檢索會(huì)話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒(méi)有匹配到數(shù)據(jù)時(shí)
        else:
            wx.SendKeys('我不理解你什么意思', waitTime=1)
            wx.SendKeys('{Enter}', waitTime=1)
            wx.TextControl(SubName=last_msg[:5]).RightClick()

到此這篇關(guān)于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)信息的功能(根據(jù)不同信息回復(fù)對(duì)應(yīng)的信息)的文章就介紹到這了,更多相關(guān)python微信自動(dòng)回復(fù)信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 將Python腳本打包成MACOSAPP程序過(guò)程

    將Python腳本打包成MACOSAPP程序過(guò)程

    我們編寫(xiě)python程序時(shí),有時(shí)候需要想將python腳本轉(zhuǎn)成可執(zhí)行的程序或者app,可以直接通過(guò)雙擊執(zhí)行即可,像Windows上可以將其通過(guò)工具轉(zhuǎn)換成exe程序,那么在MACOS下我們可以將其打包成MACOS APP程序
    2021-09-09
  • 10個(gè)Python辦公自動(dòng)化案例總結(jié)

    10個(gè)Python辦公自動(dòng)化案例總結(jié)

    Python作為一種簡(jiǎn)單而強(qiáng)大的編程語(yǔ)言,不僅在數(shù)據(jù)科學(xué)和軟件開(kāi)發(fā)領(lǐng)域廣受歡迎,還在辦公自動(dòng)化方面發(fā)揮了巨大作用,通過(guò)Python,我們可以編寫(xiě)腳本來(lái)自動(dòng)執(zhí)行各種重復(fù)性任務(wù),從而提高工作效率并減少錯(cuò)誤,在本文中,我們總結(jié)了10個(gè)Python辦公自動(dòng)化案例
    2024-09-09
  • Python3.6.2調(diào)用ffmpeg的方法

    Python3.6.2調(diào)用ffmpeg的方法

    今天小編就為大家分享一篇Python3.6.2調(diào)用ffmpeg的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Python爬取網(wǎng)易云歌曲評(píng)論實(shí)現(xiàn)詞云圖

    Python爬取網(wǎng)易云歌曲評(píng)論實(shí)現(xiàn)詞云圖

    這篇文章主要為大家介紹了Python爬取網(wǎng)易云歌曲評(píng)論實(shí)現(xiàn)詞云分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python直接賦值與淺拷貝和深拷貝實(shí)例講解使用

    Python直接賦值與淺拷貝和深拷貝實(shí)例講解使用

    淺拷貝,指的是重新分配一塊內(nèi)存,創(chuàng)建一個(gè)新的對(duì)象,但里面的元素是原對(duì)象中各個(gè)子對(duì)象的引用。深拷貝,是指重新分配一塊內(nèi)存,創(chuàng)建一個(gè)新的對(duì)象,并且將原對(duì)象中的元素,以遞歸的方式,通過(guò)創(chuàng)建新的子對(duì)象拷貝到新對(duì)象中。因此,新對(duì)象和原對(duì)象沒(méi)有任何關(guān)聯(lián)
    2022-11-11
  • 詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè)

    詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè)

    這篇文章主要介紹了詳解python的webrtc庫(kù)實(shí)現(xiàn)語(yǔ)音端點(diǎn)檢測(cè),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 基于Python實(shí)現(xiàn)語(yǔ)音合成小工具

    基于Python實(shí)現(xiàn)語(yǔ)音合成小工具

    TTS(Text To Speech)是一種語(yǔ)音合成技術(shù),可以讓機(jī)器將輸入文本以語(yǔ)音的方式播放出來(lái),實(shí)現(xiàn)機(jī)器說(shuō)話的效果。本文將使用pyttsx3庫(kù)作為示范,編寫(xiě)一個(gè)語(yǔ)音合成小工具,感興趣的可以了解一下
    2022-12-12
  • Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法

    Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法

    今天小編就為大家分享一篇Python 普通最小二乘法(OLS)進(jìn)行多項(xiàng)式擬合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • pytorch常見(jiàn)的Tensor類型詳解

    pytorch常見(jiàn)的Tensor類型詳解

    今天小編就為大家分享一篇pytorch常見(jiàn)的Tensor類型詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python使用matplotlib簡(jiǎn)單繪圖示例

    Python使用matplotlib簡(jiǎn)單繪圖示例

    這篇文章主要介紹了Python使用matplotlib簡(jiǎn)單繪圖,結(jié)合實(shí)例形式分析了Python基于matplotlib繪制正弦與余弦曲線相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論