Use python para responder automáticamente a los mensajes QQ: menos de 60 líneas

Recientemente, estuve mirando contenido relacionado con las pruebas y descubrí que las pruebas automatizadas son muy interesantes, así que decidí hacer un script que responda automáticamente a los mensajes QQ (soy muy bueno en eso)


1. Módulos que necesitan ser instalados

Este script de automatización necesita usar módulos 3. Si desea usar este script, es posible que no tenga estos módulos instalados en su python, por lo que puede instalarlo.

El primer módulo: este módulo se usa principalmente para permitir que el programa controle automáticamente una serie de operaciones del mouse y el teclado para lograr el propósito de la prueba automatizada. Ingrese el comando de instalación en cmd: pip install pyautoguipyautogui


El segundo módulo: este módulo se usa principalmente para copiar el contenido del portapapeles y escribir el contenido en el portapapeles Ingrese el comando de instalación en cmd: pip install pyperclippyperclip

El tercer módulo: psutil
psutil es una biblioteca multiplataforma que puede obtener fácilmente información sobre el proceso en ejecución y la utilización del sistema (incluida la CPU, la memoria, el disco, la red, etc.)
del sistema Ingrese el comando de instalación en cmd: pip install psutil


2. Lógica general

  • En primer lugar, debemos juzgar si QQ está en el estado de inicio de sesión. Si no está en el estado de inicio de sesión, debemos iniciar QQ y luego iniciar sesión.
  • Sondeo para detectar si alguien envía un mensaje, si alguien envía un mensaje, abra el cuadro de diálogo correspondiente
  • Ingrese automáticamente el contenido de la respuesta y responda
  • Cierre el cuadro de diálogo y vuelva a probar

¿Cómo juzgar si QQ está activado?

Sabemos que si QQ necesita ejecutarse, el sistema operativo primero le asigna recursos. Los recursos incluyen un contenido llamado proceso pid. pid es el identificador único del proceso, y la relación entre pid y proceso es 1:1. Puede conocer el nombre del proceso a través de pid, y al juzgar si el nombre es igual a "QQ.exe", puede saber si QQ se inició

#获取全部进程的pid
pl = psutil.pids()
	for pid in pl:
    # 判断QQ.exe是否运行
    if psutil.Process(pid).name() == "QQ.exe":

Si QQ no se inicia, debe iniciar QQ e iniciar sesión
. Cuando generalmente iniciamos QQ, primero debemos encontrar el acceso directo de QQ, luego hacer doble clic, esperar hasta que aparezca la interfaz de inicio de sesión de QQ y luego hacer clic para iniciar sesión o presione la tecla Enter (“enter”).
La automatización es la misma.
Hay un método os.startfile(dir) en el módulo os. El parámetro es la ubicación de almacenamiento de "QQ.exe" en el disco. Después de que aparezca la interfaz de inicio de sesión, iniciamos sesión presionando "enter".

os.startfile(QQ_dir)
time.sleep(3)
gui.write(["enter"])
time.sleep(5)

Después de que QQ haya iniciado sesión correctamente (mi opción predeterminada es No molestar), aparecerá un pequeño icono de QQ en la esquina inferior derecha del escritorio.
inserte la descripción de la imagen aquí

Si alguien envía un mensaje en este momento, habrá un mensaje
inserte la descripción de la imagen aquí

Por lo tanto, al principio, debemos tomar una captura de pantalla del aviso del mensaje QQ y juzgar si hay noticias juzgando si existe el icono del escritorio.Si hay noticias, solo tenemos que hacer clic en el icono QQ para que aparezca un cuadro de diálogo. caja.

if gui.locateOnScreen("./image/receive_message1.png", confidence=0.8) is not None:
	gui.click(gui.center(gui.locateOnScreen("./image/receive_message1.png", confidence=0.8)))

Después de que aparece el cuadro de diálogo, está en el estado de entrada de forma predeterminada. Debe usar pyperclip.copy("contenido para enviar") para cortar el contenido en la mesa de trabajo y luego usar pyautogui.hotkey("ctrl", "v") para pegar, el contenido ya está en el cuadro de entrada, presione Luego "enter" y "esc"(pyautogui.write(["enter", "esc"])) para enviar, luego cierre el diálogo

lip.copy("自动回复")
gui.hotkey("ctrl", "v")
gui.write(["enter", "esc"])

Sin embargo, cuando almaceno los datos que necesito enviar en un mensaje de texto, selecciono uno al azar para enviar cada vez.

3. Implementación del código

import os
import random

import psutil
import pyautogui as gui
import pyperclip as lip
import time

#所有的文件路径都需要自己去修改
QQ_dir = r'D:\Bin\QQScLauncher.exe'

def Proc_exist():
    pl = psutil.pids()
    for pid in pl:
        # 判断QQ.exe是否运行
        if psutil.Process(pid).name() == "QQ.exe":
            return True
    return False


def QQ_login():
    # 启动指定路径下的QQ
    os.startfile(QQ_dir)
    time.sleep(3)
    gui.write(["enter"])
    time.sleep(5)


def Readfile():
    with open("./image/text.txt", 'r', encoding="UTF-8") as f:
        filetxt = f.readlines()
    return filetxt

def Sendmessage(filetxt):
    filetxtlen = len(filetxt)
    #随机数取0到len-1
    ran = random.randint(0, filetxtlen-1)
    #剪切内容
    lip.copy(filetxt[ran])
    #粘贴
    gui.hotkey("ctrl", "v")
    gui.write(["enter", "esc"])


def Polling():
    if Proc_exist() == False:
        QQ_login()

    while True:
        # confidence=0.8是匹配精确度,需要安装opencv   pip install opencv-python
        #判断是否来消息
        if gui.locateOnScreen("./image/receive_message1.png", confidence=0.8) is not None:
            time.sleep(1)
            if gui.locateOnScreen("./image/img.png", confidence=0.8) is not None:
                location = gui.center(gui.locateOnScreen("./image/img.png"))
                gui.click(location.x+200, location.y)
            time.sleep(2)
            Sendmessage(filetxt)

# 将text.txt的数据读到列表中
filetxt = Readfile()
Polling()

Supongo que te gusta

Origin blog.csdn.net/qq_56044032/article/details/127125748
Recomendado
Clasificación