教你用python实现自动回复QQ消息(不到60行)

10-17 123阅读 0评论

?=前言

最近在看测试相关的内容,发现自动化测试很好玩,就决定做一个自动回复qq消息脚本(我很菜)

1、需要安装模块

这个自动化脚本需要用到3个模块,如果要使用这个脚本的朋友,自己的Python中可能没有安装这些模块,所以就可以安装一下

第1个模块:pyautoGUI

这个模块主要是用来让程序自动控制鼠标和键盘的一系列操作来达到自动化测试的目的。

在cmd下输入安装命令pip install pyautogUI

第2个模块:pyperclip

这个模块主要用于复制剪贴板里的内容,向剪贴板写入内容

在cmd下输入安装命令:pip install pyperclip

第3个模块:psutil

psutil是一个跨平台,能够轻松实现获取系统运行的进程和系统利用率(括CPU、内存、磁盘、网络等)信息

在cmd下输入安装命令:pip install psutil

2、整体逻辑

首先我们需要判断QQ是否处于登录状态,如果没有处于登录状态,我们需要启动QQ,再进行登录。轮询检测是否有人发送消息,如果有人发送消息,则打开对应的会话框自动输入回复的内容并进行回复关闭会话框,再进行检测

如何判断QQ是否处启动?

我们知道QQ如果需要运行,首先操作系统给它分配资源,资源中就包括一个叫进程PID的内容,pID是进程的唯一标识,pid和进程是1:1的关系。通过pid就可以知道进程的名字,判断这个名字是否与"QQ.exe"相等就可以知道QQ是否启动

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

如果QQ没有启动,需要启动QQ,并登录

我们平时启动QQ的时候,首先需要找到QQ的快捷方式,然后双击,等到QQ的登录界面出现后,再点击登录或者按回车键(“enter”)。

自动化也是一样的。

os模块中有一个方法os.startfile(DIr)参数就是"QQ.exe"在磁盘中的存放位置,登录界面出现后,我们这里采用按回车(“enter”)的方式进行登录

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

QQ成功登录后(我的默认是免打扰),在桌面的右下角会出现QQ的小图标

教你用python实现自动回复QQ消息(不到60行)

如果此时有人发来消息,则会有提示符

教你用python实现自动回复QQ消息(不到60行)

因此最开始,就需要对这个QQ消息提示符进行截图,通过判断桌面这个图标是否存在,来判断是否有消息,如果有消息,我们只需要点击这个QQ这个图标,就能弹出对话框

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))) 

弹出对话框后,默认是处于输入状态的。需要用到pyperclip.Copy(“需要发送的内容”)剪切内容到粘贴板上,再使用pyautogui.hotkey(“ctrl”, “v”)进行粘贴,此时内容就已经在输入框中,按下"enter"和"esc"(pyautogui.write([“enter”, “esc”]))进行发送,然后关闭对话框

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

不过在我是将我需要发送的数据存放在了一个文本里,每次都随机选择一个发送

3、代码实现

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: 	# 点击图片在屏幕中出现的中间位置,就能弹出对话框 	gui.click(gui.center(gui.locateOnScreen("./image/receive_message1.png", confidence=0.8))) time.sleep(2) # 判断是否有消息漫游验证,如果有,把它关掉 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() 

if gui.locateOnScreen("./image/img.png", confidence=0.8) is not None的意思:

弹出对话框后可能会存在消息漫游安全验证,所以需要判断,如果存在,则需要关掉验证,再发送消息

教你用python实现自动回复QQ消息(不到60行)

receive_message1.png:

教你用python实现自动回复QQ消息(不到60行)

img.png:

教你用python实现自动回复QQ消息(不到60行)

使用的时候记得把图片路径换成自己的,记得QQ开免打扰,开了免打扰好像才有消息提示的黄色框

总结

到此这篇关于用python实现自动回复QQ消息(不到60行)的文章就介绍到这了,更多相关python自动回复QQ消息内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,123人围观)

还没有评论,来说两句吧...