我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

前言

最近在看测试相关的内容,发现自动化测试很好玩,就决定做一个自动回复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的小图标

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

因此最开始,就需要对这个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的意思:

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

receive_message1.png:

img.png:

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

总结

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python自动化如何实现自动回复QQ消息

这篇文章主要介绍了python自动化如何实现自动回复QQ消息,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.需要安装的相关软件和python模块1.1 安装client模块
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录