脚本-QQ批量发送消息(图片和文字)
目录
代码
代码功能详解
注意事项
致谢
代码
import io
import traceback
import win32clipboard
import pyautogui
import pyperclip
import win32gui # 替换为pywin32的正确模块名
import pandas as pd
import time
from PIL import Imageclass QQAutoMessage:def __init__(self):self.contacts_file = r".\students.xlsx" # Excel表位置self.qq_search_pos = (191, 56) # 搜索框坐标self.contact_pos = (600, 857) # 聊天输入框坐标self.first_contact_pos = (244, 155) # 第一个符合条件的坐标self.send_delay = 1self.pictures = [r"test.png"] # 图片路径列表def load_file(self):return pd.read_excel(self.contacts_file, engine='openpyxl')def find_qq_window(self):hwnd = win32gui.FindWindow(None, "QQ")if hwnd == 0:raise Exception("未检测到QQ主窗口,请确认已登录")return hwnddef search_contact(self, student_id):pyautogui.moveTo(self.qq_search_pos)pyautogui.click()time.sleep(0.5)pyautogui.hotkey('ctrl', 'a')pyautogui.press('backspace')time.sleep(0.5)pyautogui.typewrite(str(student_id))time.sleep(1)pyautogui.moveTo(self.first_contact_pos)pyautogui.doubleClick()def send_message(self, message):time.sleep(1)pyautogui.moveTo(self.contact_pos)pyautogui.click()time.sleep(2)pyperclip.copy(message)pyautogui.hotkey('ctrl', 'v')time.sleep(1)pyautogui.press('enter')# send pictures ?if self.pictures:for picture_path in self.pictures:copy_image_to_clipboard(picture_path)pyautogui.hotkey('ctrl', 'v')time.sleep(1)pyautogui.press('enter')return Truedef run(self):contacts = self.load_file()qq_hwnd = self.find_qq_window()if qq_hwnd == 0:exit(-1)# begin send messagefor index, row in contacts.iterrows():try:self.search_contact(row['学号'])success = self.send_message(row['消息内容'])if success:print(f"成功发送给:{row['姓名']}(内容:{row['消息内容']}...)")else:print(f"发送失败:{row['姓名']}")time.sleep(self.send_delay)except Exception as e:traceback.print_exc()print(e)continuedef copy_image_to_clipboard(image_path):image = Image.open(image_path)output = io.BytesIO()image.convert("RGB").save(output, "BMP")data = output.getvalue()[14:]output.close()win32clipboard.OpenClipboard()try:win32clipboard.EmptyClipboard()win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data)finally:win32clipboard.CloseClipboard()if __name__ == "__main__":bot = QQAutoMessage()bot.run()
代码功能详解
加载Excel文件,根据文件中的学号在QQ搜索框中进行搜索,并选择第一个符合搜索条件的对象进行对话,发送聊天文本,并发送图片。
注意事项
- 需要安装对应的包
- 需要修改文件中的变量内容:contacts_file、pictures
- 合理修改以下变量:qq_search_pos、contact_pos、first_contact_pos【这部分内容分别指代QQ搜索框的坐标、聊天文字输入框的坐标、搜索到的第一个符合条件的坐标,本人选择的是将QQ界面最大化】
- 需要创建一个Excel表格,表格形式如下:
姓名 | 学号 | 发送文字 |
---|---|---|
张三 | 00000000 | 今晚有约吗? |
致谢
我亲爱的女朋友给了我灵感和动力。
羡林i提供的复制图片到剪切板的函数。
相关文章:
脚本-QQ批量发送消息(图片和文字)
目录 代码 代码功能详解 注意事项 致谢 代码 import io import traceback import win32clipboard import pyautogui import pyperclip import win32gui # 替换为pywin32的正确模块名 import pandas as pd import time from PIL import Imageclass QQAutoMessage:def __in…...
高等数学A1 期末救济(导数)
基于song复习 闭区间上连续函数的性质 在闭区间里,f(x)连续> f(x)有界 导数 导数三种定义及不同写法 常用导数公式 可导→连续,但连续❎→可导 切线类问题求解 求某点切线方程与求过某点的切线方程 反函数求导法则 反函数的导数直接函数导数的导数 例…...
前端VUE框架理论与应用(7)
一、用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。 在 v-for 块中,我们可以访问所有父作用域的属性。v-for 还…...
argparse
argparse.add_argument 完全指南 🧱 基础篇:命令行参数解析入门 1. 模块初始化 import argparse# 创建参数解析器(所有操作的基础容器) parser argparse.ArgumentParser( progMyApp, # 程序名称(默认从sys.argv[0]…...
力扣-hot100(移动零)
283. 移动零 简单 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输…...
优先级队列的实模拟实现
优先级队列底层默认用的是vector来存储数据,实现了类似我们数据结构中学习过的堆的队列,他的插入和删除都是优先级高先插入和删除。下面我们来模拟实现它们常见的接口来熟悉优先级队列。 仿函数 在介绍优先级队列之前,我们先熟悉一个概念&a…...
ES6的`class`中,`super`关键字在构造函数和非构造函数中的行为有何不同?
在 ES6 的 class 中,super 关键字的行为在 构造函数 和 非构造函数(普通方法) 中有显著区别,主要体现在以下方面: 1. 构造函数中的 super 行为规则 必须显式调用: 在子类的构造函数中,必须先调…...
从 BI 与 SQL2API 的差异,看数据技术的多元发展路径
在数据驱动的商业世界里,商业智能(BI)与 SQL2API 如同两颗闪耀的星星,各自散发着独特的光芒。BI 早已在企业中广泛应用,成为数据分析领域的中流砥柱;而 SQL2API 作为新兴技术,虽潜力巨大&#x…...
UNet脑瘤医学影像分割训练实战(PyTorch 完整代码)
UNet是一种基于卷积神经网络(CNN)的医学影像分割模型,由Ronneberger等人于2015年提出。本文我们将简要介绍基于PyTorch框架,使用UNet模型在脑瘤医学影像分割数据集上进行训练,同时通过SwanLab监控训练过程,…...
MySQL事务隔离级别详解
MySQL事务隔离级别详解 1. 基本概念 1.1 什么是事务隔离级别? 事务隔离级别是数据库管理系统为了保证数据一致性,在多个事务并发访问时提供的不同级别的保护机制。 1.2 事务并发问题 脏读(Dirty Read): 一个事务读…...
2025年K8s最新高频面试题
目录 Kubernetes的核心组件有哪些,各自作用是什么? Pod和Deployment的区别? Service有哪些类型,分别适用于什么场景? ConfigMap和Secret有什么区别? StatefulSet 和 Deployment 的主要区别是什么? 什么是 Ingress,有哪些常用实现方式? 如何限制 Kubernetes 中 Pod …...
CobaltStrike
概述 Cobalt Strike是⼀款基于java的渗透测试神器,常被业界⼈称为CS神器。⾃3.0以后已经不在使用 Metasploit框架⽽作为⼀个独⽴的平台使用,分为客户端与服务端,服务端是⼀个,客户端可以有 多个,⾮常适合团队协同作战…...
Web前端 (CSS篇)
什么是CSS? css(Cascading Style Sheets)是层叠样式表或级联样式表,是一组设置规则,用于控制web页面外观。 为什么使用CSS? CSS 用于定义网页的样式,包括针对不同设备和屏幕尺寸的设计和布局。 CSS 实例 body {background-col…...
回归测试中常见的问题:如何避免“越改越错“的陷阱
修复一个Bug,引入三个新Bug "我们只是改了个小功能,为什么整个系统都出问题了?"——这是回归测试失败的典型症状。据IBM研究显示,约40%的线上缺陷源自不充分的回归测试。本文将深入剖析回归测试中的常见陷阱࿰…...
红宝书第四十六讲:Node.js基础与API设计解析
红宝书第四十六讲:Node.js基础与API设计解析 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、Node.js基础概念 1. 流(Streams)的核心地位 12 Node.js的文件读写和网络通信依…...
IT运维常用的软件工具有哪些
IT运维常用的软件工具主要包括:监控工具、自动化运维工具、日志管理工具、网络管理工具、资产管理工具、服务台工具。这些工具分别用于保障IT系统稳定运行、提升运维效率、快速响应故障。其中,监控工具至关重要,它能实时监测系统运行状态、资…...
eplan许可证迁移到其他计算机
随着电气设计项目的不断扩大和变更,您可能需要将EPLAN许可证从一台计算机迁移到另一台计算机上。然而,在迁移过程中,确保您的软件始终保持最佳状态至关重要。本文将为您提供一份详尽的EPLAN许可证迁移指南,帮助您轻松完成这一操作…...
服务器部署静态页面
前言 需要先下载nginx,然后上传你的静态网页文件,最后设置nginx展示静态页面 安装nginx 第一步:在服务器上下载nginx服务 sudo dnf install nginx 第二步:启动nginx sudo systemctl start nginx 第三步:验证ngin…...
Spring boot 知识整理
一、SpringBoot 背景内容梳理 SpringBoot是一个基于Spring框架的开源框架,用于简化Spring应用程序的初始搭建和开发过程。它通过提供约定优于配置的方式,尽可能减少开发者的工作量,使得开发Spring应用变得更加快速、便捷和高效。 SpringBoot…...
软件测试面试题汇总---实时更新
1. java垃圾回收机制 2. 类为什么不能多继承,而接口可以 参考为什么类之间只能单继承不能多继承,接口之间可以多继承,类与接口之间可以多实现_内部可以多继承而接口可以多实现-CSDN博客 3. java面向对象的三大特性 继承、封装、多态 4. …...
2025海外代理IP测评:Bright Data,ipfoxy,smartproxy,ipipgo,kookeey,ipidea哪个值得推荐?
近年来,随着全球化和跨境业务需求的不断扩大“海外代理IP”逐渐成为企业和个人在多样化场景中的重要工具。无论是进行数据采集、广告验证、社交媒体管理,还是跨境电商平台运营,选择合适的代理IP服务商都显得尤为重要。然而,市场上…...
蓝桥杯 8. 分巧克力
分巧克力 原题目链接 问题描述 儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N 块巧克力,其中第 i 块是 Hᵢ Wᵢ 的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。 要求…...
计算机组成原理—————计算机运算方法精讲<3>反码及移码的表示
第一部分:反码表示法 这里我们直接给出整数反码的计算公式 我们实际计算中其实不用死记硬背公式,小编在这里介绍一下求反码的秒杀技 反码秒杀技:定号取反 第一步:确定符号位是0还是1 第二步:符号位不变,…...
关于STM32创建工程文件启动文件选择
注意启动文件只要选择这几个 而不是要把所有都选上...
FC-4 mapping映射协议VI、hippi、fhcp、scma表示啥意思
FC-4 mapping映射协议VI、hippi、fhcp、scma表示啥意思 1.FC-4 Upper layer protocol协议映射层,定义了光纤通道和上层应用,包括FPGA/ARM 或者其他上层应用之间的接口。上层应用协议包括:串行scsi协议,fcp-scsi协议, f…...
15、stack、queue、deque的模拟实现
一、stack 1、stack的使用 请看这篇文章 2、stack的原理 这篇文章的栈原理讲的不错,并且有链式栈和顺序栈的创建,还有栈常使用的场景,没有数据结构基础的可以看,并且实现一下他的2种栈。 3、stack的实现 3.1、成员变量 这里…...
GR00T N1:面向通用类人机器人的开放基础模型
摘要 通用型机器人需要具备多功能的身体和智能的大脑。近年来,类人机器人的发展在构建人类世界中的通用自主性硬件平台方面展现出巨大潜力。一个经过大量多样化数据源训练的机器人基础模型,对于使机器人能够推理新情况、稳健处理现实世界的多变性以及快…...
保姆级教程:RK3588部署yolo目标检测模型
本文用到的板卡设备为鲁班猫4(LubanCat-4),瑞芯微rk3588系列处理器。 官方文档写的挺详细了,但是版本太多不统一,而且涉及了多个代码仓库,稍显杂乱。本着最少代码原则,仅需下载一个代码仓库&am…...
【含文档+PPT+源码】物联网车辆GPS定位管理系统【
项目视频介绍: 毕业作品物联台云平台的设计与实现 课程简介: 本课程演示的是一款物联网车辆GPS定位管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚…...
热烈祝贺“中芯机械”选择使用订单日记
感谢潍坊中芯机械制造有限公司选择使用订单日记! 潍坊中芯机械制造有限公司,成立于2023年,位于山东省潍坊市,是一家以从事生产、销售农业机械、汽车配件、机械电气设备等业务为主的企业。 在业务不断壮大的过程中,想…...
2025年保安员考试题库及答案
一、单选题 81、保安员张某和李某在火车站巡逻时,发现一男青年神色慌张,行为诡秘,这两名保安员识别这一可疑情况使用的方法是()。 A.查问法 B.直接观察法 C.判断法 D.视觉判断法 答案:B 82、某天&…...
ADB的安装及抓取日志(1)
一、简介 ADB(Android Debug Bridge)是一个通用命令行工具,允许你与 Android 设备进行通信。它主要用于开发和调试目的,但也可用于其他多种功能,如安装应用、运行 shell 命令、查看日志等。ADB 是 Android SDK 的一部…...
用 Iris数据做决策树分析
文章目录 Iris数据的准备1.直接从sklearn.datasets 加载或转化成文件已备本地使用2.可以在https://archive.ics.uci.edu/dataset/53/iris下载 过程示例代码如下生成的决策树如下:生成的分析报告如下: 决策树模型分析报告1. 模型性能2. 特征重要性3. 决策…...
【Bluedroid】A2DP Sink播放流程源码分析(三)
AVCTP消息处理 avrc_msg_cback /packages/modules/Bluetooth/system/stack/avrc/avrc_api.cc /******************************************************************************** Function avrc_msg_cback** Description This is the callback function used…...
概念实践极速入门 - 常用的设计模式 - 简单生活例子
概念实践极速入门 - 常用的设计模式 - 简单生活例子 SOLID 五大设计原则的首字母缩写 单一职责原则 和 开闭原则 就省略啦, 这两个概念很简单, 为了写而写反而容易误导人~* 鼓励大家字面理解! // 哎呀还是解释吧 单一(S): 单干一件事; 开闭(O): 拓展开放, 修改关…...
postgres 数据库信息解读 与 sqlshell常用指令介绍
数据库信息: sqlshell Server [localhost]: 192.168.30.101 Database [postgres]: Port [5432]: 5432 Username [postgres]: 用户 postgres 的口令: psql (15.12, 服务器 16.8 (Debian 16.8-1.pgdg1201)) 警告:psql 主版本15,服务器主版本为…...
映射网络路路径和ftp路径原理是什么,如何使用,有什么区别
文章目录 一、原理1. 映射网络路径2. FTP路径 二、使用方法1. 映射网络路径2. FTP路径 三、主要区别1. 协议与功能2. 安全性与权限3. 适用场景 四、如何选择?五、注意事项 映射网络路径(如SMB/CIFS或NFS)和FTP路径(FTP/FTPS/SFTP&…...
微服务3--服务容错
前言:本篇主要介绍服务容错与Sentinel进行限流。 高并发带来的问题 在微服务架构中,我们将业务拆分为一个个的服务,服务与服务之间都可以相互调用,但是由于网络或者说服务器本身的问题,服务不能保证100%可用ÿ…...
4.15redis点评项目下
--->接redis点评项目上 Redis优化秒杀方案 下单流程为:用户请求nginx--->访问tomcat--->查询优惠券--->判断秒杀库存是否足够--->查询订单--->校验是否是一人一单--->扣减库存--->创建订单 以上流程如果要串行执行耗时会很多,…...
Web开发-JavaEE应用原生和FastJson反序列化URLDNS链JDBC链Gadget手搓
知识点: 1、安全开发-JavaEE-原生序列化-URLDNS链分析 2、安全开发-JavaEE-FastJson-JdbcRowSetImpl链分析 利用链也叫"gadget chains",我们通常称为gadget: 1、共同条件:实现Serializable或者Externalizable接口&…...
坚持每日Codeforces三题挑战:Day 3 - 题目详解(2024-04-16,难度:900, 1200, 1200)
每天坚持写三道题第三天 (今天写点简单的,剩下去刷力扣了) 今日题目: Problem - B - Codeforces 900 Problem - B - Codeforces 1300 Problem - D - Codeforces 1400 题目一: Problem - B - Codeforces 题目大意: 给你一个数组,每次操…...
MySQL5.7递归查询
向下递归查询 SELECT ID,NAME,PARENT_ID,LEVEL_FROM(SELECT ID AS _IDS,(SELECT ID : GROUP_CONCAT(ID)FROM TREE_TABLE WHERE FIND_IN_SET(PARENT_ID,ID) > 0AND REMOVE N) T1,L : L 1 AS LEVEL_FROM TREE_TABLE,(SELECT ID : start, L: 0) T2WHERE ID IS NOT NULL) T3,…...
半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)
文章目录 1、处理器1.1、事件 2、GEM 合规性2.1、状态模型2.2、 设备加工状态2.3、 文档2.4、 控制 (作员启动)2.5、 动态事件报告配置2.6、 跟踪数据收集2.7、 报警管理2.8、 远程控制2.9、 设备常量2.10、 工艺配方管理2.11、 物料移动2.12、 设备终端…...
C++异步编程从入门到精通实战:全面指南与实战案例
C异步编程从入门到精通实战:全面指南与实战案例 在当今多核处理器普及的时代,异步编程成为了提升程序性能和响应能力的关键技术。无论是在高频交易系统、实时游戏引擎,还是网络服务器和大型数据处理平台,异步编程都发挥着至关重要…...
驱动开发硬核特训 · Day 13:从 device_create 到 sysfs,设备文件是如何生成的?
🔍 B站相应的视屏教程: 📌 内核:博文视频 - 备树深度解析:理论 实践全指南(含 of 函数与 i.MX8MP 实例) 敬请关注,记得标为原始粉丝。 🔧 📌 本文目标&#…...
肾脏系统触发 “数据包泄漏“ (血尿)与 “元数据校验异常“(蛋白尿)
肾脏系统触发 "数据包泄漏" (血尿)与 "元数据校验异常"(蛋白尿) 用计算机术语来类比。在之前的对话中,肾小球被比作防火墙或过滤器,肾小管则是回收系统。红细胞泄漏通常是因为肾小球的过滤屏障受损,而蛋白尿则可能与肾小…...
密码学(二)流密码
2.1流密码的基本概念 流密码的基本思想是利用密钥 k 产生一个密钥流...,并使用如下规则对明文串 ... 加密:。密钥流由密钥流发生器产生: ,这里是加密器中的记忆元件(存储器)在时刻 i 的状态,…...
Python 趣味学习 -数据类型脱口秀速记公式 [特殊字符]
🎤 Python数据类型脱口秀速记公式 🐍 1️⃣ 四大金刚登场 "Set叔(无序洁癖)、Tuple爷(顽固老头)、List姐(百变女王)、Dict哥(万能钥匙)"2️⃣ 特性对比RAP 🎶 内存/作用域: 全局变量 → 函数内修改 → 可变(mutable)会…...
嵌入式Linux设备使用Go语言快速构建Web服务,实现设备参数配置管理方案探究
本文探讨,利用Go语言及gin框架在嵌入式Linux设备上高效搭建Web服务器,以实现设备参数的网页配置。通过gin框架,我们可以在几分钟内创建一个功能完善的管理界面,方便对诸如集中器,集线器等没有界面的嵌入式设备的管理。…...
波束形成(BF)从算法仿真到工程源码实现-第十二节-总结
一、总结 (1)基于webrtc的非线性波束形成效果较好,复杂度较低,但是波束形成后引入了非线性,导致噪声估计不准确,降噪效果变差。 (2)MVDR使用噪声协方差矩阵对平稳噪声降噪效果比较…...