用python实现自动回复QQ消息——不到60行

本文介绍了一个使用Python编写的QQ消息自动回复脚本,涉及到pyautogui、pyperclip和psutil等模块。脚本首先判断QQ是否已启动,未启动则自动登录,接着监听消息提示,收到消息后从预设文本中随机选取内容进行回复。文章提供了详细的代码实现过程,包括QQ启动、登录、消息检测及回复等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看测试相关的内容,发现自动化测试很好玩,就决定做一个自动回复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可以结合企业微信开发者API来实现自动化回复消息的功能。首先,你需要注册成为企业微信的开发者,并获取access_token和appsecret等必要的认证信息。然后,你可以使用如requests库来发送HTTP请求,按照企业微信提供的文档,包括: 1. **授权登录**:通过`login`接口获取用户的授权码,用于换取access_token。 ```python import requests url = "https://qyapi.weixin.qq.com/cgi-bin/user/gettoken?corpid=your_corpid&corpsecret=your CorpSecret" response = requests.get(url) access_token_data = response.json() access_token = access_token_data["access_token"] ``` 2. **接收事件**:设置一个 webhook 来监听来自企业微信的消息事件,比如用户发送的消息、扫码事件等。 ```python url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_webhook_secret" data = {"msgtype": "text", "text": {"content": "您的消息自动回复"}} response = requests.post(url, json=data, headers={"Content-Type": "application/json"}) ``` 3. **编写处理函数**:根据接收到的消息内容,编写相应的处理逻辑,例如使用正则表达式匹配关键字,然后生成并返回自动回复的内容。 ```python def handle_message(message): if "关键词" in message.content: # 自动回复内容 reply_content = "这是自动回复:您说了关键词!" return reply_content # 实时轮询或长轮询机制,检查是否有新的消息到来 while True: check_updates(access_token) ``` 注意,以上代码示例简化了实际场景,实际项目中可能需要处理更复杂的情况,并可能涉及权限管理、错误处理以及定时任务等功能。在完成基本功能后,务必遵守企业微信的相关服务条款和隐私政策。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值