python定时发送QQ消息

博客简介

前言:
额,我也不知道为啥群里的小伙伴就。。开始抢龙王了???这个龙头有啥用吗?这伙人,也许闲出毛病了。好吧,我也是,但是一条一条发消息真的很累a,所以想到用python自动发送消息——废话不说,开始吧,龙王是我。

  • 安装pywin32库
  • 定义消息发送类
  • 获取消息
  • 定时
  • 运行

安装pywin32库

pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制…我们这里的QQ消息发送则用到了pywin32下的窗口历遍,消息发送,剪切板等API,正式使用之前,pip安装:
在这里插入图片描述

定义消息发送类

这个类要实现的功能是将消息复制到剪切板,然后历遍窗口找到我们的接收者,将消息发送:

class sendMsg():
    def __init__(self,receiver,msg):
        self.receiver=receiver
        self.msg=msg
        self.setText()
    #设置剪贴版内容
    def setText(self):
        w.OpenClipboard()
        w.EmptyClipboard()
        w.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
        w.CloseClipboard()
    #找到消息发送窗口,发送消息
    def sendmsg(self):
        qq=win32gui.FindWindow(None,self.receiver)
        win32gui.SendMessage(qq,win32con.WM_PASTE , 0, 0)
        win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
        print("sucessfuly send",self.msg)

获取消息

我们发送的消息从何而来?这里我是复制的之前我在群里的消息记录,然后过滤掉一些无用信息,存入文件中。然后再从文件中随机获取一条消息,提供给消息发送类

(1)复制群消息记录粘贴在txt中
在这里插入图片描述
(2)过滤掉其中的头衔,换行等等,写到message.txt文件中:

def main():
	f=open('test.txt','r',encoding='utf-8')
	lines=""
	for x in f:
		if ('【' in x) or (x=='\n'):continue
		lines+=x
	f.close()
	f=open('message.txt','w',encoding='utf-8')
	f.write(lines)
	f.close()
main()

可以看到过滤后的消息要简洁许多
在这里插入图片描述
(3)随机获取message文件中的一条消息:

def getmessage(fileName):
    f=open(fileName,'r',encoding='utf-8')
    lines=f.readlines()
    f.close()
    return choice(lines)

定时

定时我们可以用到time库中的sleep,单位为s,套在一个while循环中:

def main():
    receiver='XXXX'#这里填入接收者的备注名
    while True:
        msg=getmessage('message.txt')
        qq=sendMsg(receiver,msg)
        qq.sendmsg()
        time.sleep(randrange(60,10*60,60))

运行代码

最终代码实现如下:

import win32con
import win32gui
import win32clipboard as w
import time
from random import choice
from random import randrange

class sendMsg():
    def __init__(self,receiver,msg):
        self.receiver=receiver
        self.msg=msg
        self.setText()
    #设置剪贴版内容
    def setText(self):
        w.OpenClipboard()
        w.EmptyClipboard()
        w.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
        w.CloseClipboard()
    #发送消息
    def sendmsg(self):
        qq=win32gui.FindWindow(None,self.receiver)
        win32gui.SendMessage(qq,win32con.WM_PASTE , 0, 0)
        win32gui.SendMessage(qq, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
        print("sucessfuly send",self.msg)

def getmessage(fileName):
    f=open(fileName,'r',encoding='utf-8')
    lines=f.readlines()
    f.close()
    return choice(lines)

def main():
    receiver='xxxx'#这里填入接收者的备注名
    while True:
        msg=getmessage('message.txt')
        qq=sendMsg(receiver,msg)
        qq.sendmsg()
        time.sleep(randrange(60,10*60,60))

if __name__ == '__main__':
    main()

在这里插入图片描述
好了,抱得龙儿归。

发布了191 篇原创文章 · 获赞 377 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/105003545
今日推荐