最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一.效果展示

二.前言介紹

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

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

總之UIAutomation的功能還是非常強大的,我們這次拿他來小試牛刀

三.進入正題

1.需要用到的包

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

安裝UIAutomation

pip install uiautomation

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

pip install pandas

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

pip install numpy

2.下面進入到代碼的部分

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

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

2.2定義微信窗口控件 

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

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

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

wx.ListControl()
wx.SwitchToThisWindow()

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

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

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

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

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

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

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

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

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

2.5獲取最新的信息

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

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

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

  # 存在未讀消息
    if we.Name:
        # 點擊未讀消息
        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()點擊事件,點擊到未讀信息的用戶對話框中,使用  apply()  函數(shù)從讀取到的 csv 文件中查找是否包含  last_msg  中的關(guān)鍵詞。該函數(shù)使用了給定的 lambda 函數(shù),對  df  DataFrame 表格中的每一行進行遍歷,并返回符合條件的行,然后篩選出數(shù)據(jù),使用  dropna()  函數(shù)刪除無效數(shù)據(jù)(即值為 None 的行),利用  np.array()  函數(shù)將 DataFrame 對象轉(zhuǎn)換為 numpy 數(shù)組,再使用  tolist()  函數(shù)將其轉(zhuǎn)換為 Python 列表。將處理后的列表存儲在名為  ar  的變量中。

2.7回復(fù)信息

    # 能夠匹配到數(shù)據(jù)時
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=0)
            # 通過消息匹配檢索會話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒有匹配到數(shù)據(jù)時
        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ù)輸入到對話框中,waitTime是設(shè)置它的等待時間,wx.SendKeys'{Enter}'就是響應(yīng)回車鍵,將信息發(fā)送出去,waitTime也是等待時間,wx.TextControl(SubName=ar[0][:5]).RightClick()的作用就是通過消息匹配檢索會話欄的聯(lián)系人,也就是實現(xiàn)一個鼠標右擊功能:

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

四:完整代碼

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import numpy as np  # 引入numpy庫,目的是將讀取的數(shù)據(jù)轉(zhuǎn)換為列表
import pandas as pd  # 引入pandas庫,用來讀取csv數(shù)據(jù)
from uiautomation import WindowControl  # 引入uiautomation庫中的WindowControl類,用來進行圖像識別和模擬操作
# 綁定微信主窗口
wx = WindowControl(
    Name='微信',
    searchDepth=1
)
# 切換窗口
wx.ListControl()
wx.SwitchToThisWindow()
# 尋找會話控件綁定
hw = wx.ListControl(Name='會話')
# 通過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)維持,沒有超時報錯
    while not we.Exists():
        pass
    # 存在未讀消息
    if we.Name:
        # 點擊未讀消息
        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ù)時
        if ar:
            # 將數(shù)據(jù)輸入
            # 替換換行符號
            wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=1)
            # 發(fā)送消息 回車鍵
            wx.SendKeys('{Enter}', waitTime=1)
            # 通過消息匹配檢索會話欄的聯(lián)系人
            wx.TextControl(SubName=ar[0][:5]).RightClick()
        # 沒有匹配到數(shù)據(jù)時
        else:
            wx.SendKeys('我不理解你什么意思', waitTime=1)
            wx.SendKeys('{Enter}', waitTime=1)
            wx.TextControl(SubName=last_msg[:5]).RightClick()

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

相關(guān)文章

  • Python2和3字符編碼的區(qū)別知識點整理

    Python2和3字符編碼的區(qū)別知識點整理

    在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識點,有需要的朋友們可以學(xué)習下。
    2019-08-08
  • python區(qū)分不同數(shù)據(jù)類型的方法

    python區(qū)分不同數(shù)據(jù)類型的方法

    這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實例以及相關(guān)知識點,需要的朋友們學(xué)習下。
    2019-10-10
  • Docker?Python官方鏡像使用說明(TAG說明)及實戰(zhàn)小貼士

    Docker?Python官方鏡像使用說明(TAG說明)及實戰(zhàn)小貼士

    Python是一門廣泛使用的編程語言,在容器化環(huán)境中,構(gòu)建和使用Python鏡像是非常常見的任務(wù),這篇文章主要介紹了Docker?Python官方鏡像使用說明(TAG說明)及實戰(zhàn)小貼士的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • python?序列去重并保持原始順序操作

    python?序列去重并保持原始順序操作

    這篇文章主要介紹了python序列去重并保持原始順序操作,文章圍繞了python?序列去重的相關(guān)資料展開詳細介紹,需要的小伙伴可以參考一下,希望對你的有所幫助
    2022-03-03
  • 如何在VSCode下使用Jupyter的教程詳解

    如何在VSCode下使用Jupyter的教程詳解

    這篇文章主要介紹了如何在VSCode下使用Jupyter,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Python如何寫入Pandas DataFrame到CSV文件

    Python如何寫入Pandas DataFrame到CSV文件

    Pandas是一個功能強大的Python數(shù)據(jù)分析庫,常用于處理和分析數(shù)據(jù),CSV文件是一種廣泛使用的數(shù)據(jù)交換格式,Pandas通過to_csv方法支持將DataFrame寫入CSV文件,此方法允許用戶指定分隔符、編碼和選擇性寫入特定列等
    2024-09-09
  • Python Celery異步任務(wù)隊列使用方法解析

    Python Celery異步任務(wù)隊列使用方法解析

    這篇文章主要介紹了Python Celery異步任務(wù)隊列使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-08-08
  • Python實現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換

    Python實現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換

    Word文檔(.doc或.docx)和純文本文件(.txt)是兩種常用的文件格式,本文將詳細介紹如何使用Python實現(xiàn)Word和TXT文件格式之間的相互轉(zhuǎn)換,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • Python實現(xiàn)比較撲克牌大小程序代碼示例

    Python實現(xiàn)比較撲克牌大小程序代碼示例

    這篇文章主要介紹了Python實現(xiàn)比較撲克牌大小程序代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • python之ImportError:模塊引入異常問題

    python之ImportError:模塊引入異常問題

    這篇文章主要介紹了python之ImportError:模塊引入異常問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

大丰市| 泸定县| 望谟县| 宁津县| 漳州市| 大洼县| 眉山市| 浮山县| 婺源县| 庄浪县| 新昌县| 蓬莱市| 金门县| 偃师市| 大邑县| 儋州市| 当雄县| 鹤岗市| 龙海市| 广德县| 南京市| 图木舒克市| 孟津县| 侯马市| 兴安县| 应城市| 浏阳市| 大同县| 昌平区| 凤冈县| 灌云县| 连江县| 桃江县| 河北省| 丹巴县| 韩城市| 雅江县| 祁连县| 荥阳市| 弥勒县| 新化县|