当前位置: 首页 > news >正文

脚本-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搜索框中进行搜索,并选择第一个符合搜索条件的对象进行对话,发送聊天文本,并发送图片。

注意事项

  1. 需要安装对应的包
  2. 需要修改文件中的变量内容:contacts_file、pictures
  3. 合理修改以下变量:qq_search_pos、contact_pos、first_contact_pos【这部分内容分别指代QQ搜索框的坐标、聊天文字输入框的坐标、搜索到的第一个符合条件的坐标,本人选择的是将QQ界面最大化】
  4. 需要创建一个Excel表格,表格形式如下:
姓名学号发送文字
张三00000000今晚有约吗?

致谢

我亲爱的女朋友给了我灵感和动力。

羡林i提供的复制图片到剪切板的函数。

相关文章:

  • 23黑马产品经理Day01
  • 用户态与内核态多个维度的区别
  • 爬虫(基本知识介绍,urllib库的说明)
  • 波束形成(BF)从算法仿真到工程源码实现-第十二节-总结
  • Redis原理与Windows环境部署实战指南:助力测试工程师优化Celery调试
  • Java Bean演进历程:从POJO到Spring Boot配置绑定
  • Vue3 SSR生物启发架构:仿生渲染与DNA流式编码
  • 解决JSON格式数据大小写问题,以及@JsonProperty 和@JSONField序列化的区别
  • TVS管与ESD保护二极管详解:原理、区别与应用选型
  • 广东广州一家IPO资产重组疑点重重,信息披露真实性存疑
  • 通过高斯分布概率密度函数寻找到数据中的异常点
  • TLS/SSL 弱密码套件中危漏洞修复
  • Security 权限控制的基本流程
  • 基于 Python 的 ROS2 应用开发全解析
  • 【扩散模型(十三)】Break-A-Scene 可控生成,原理与代码详解(中)Cross Attn Loss 代码篇
  • tcp和udp的数据传输过程以及区别
  • neakyThrows 是 Lombok 库中的一个注解
  • LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习
  • 2025年文件加密软件的作用及其在现代社会中的重要性
  • 类的加载过程
  • 做设计找图片的网站有哪些/淘宝店铺运营
  • 常州做网站找哪家好/剪辑培训班一般学费多少
  • 网站搭建和网页设计/爱站seo工具包官网
  • 廊坊网站建设精灵/关键词歌曲免费听
  • 在线简历/百度官方优化软件
  • 做外贸纱线用什么网站/微信朋友圈推广文案