roger 发表于 2020-5-4 00:26:51

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()

好了,抱得龙儿归。
                                                                        飞翔的哈士奇                                                                                                                                        原创文章 220获赞 393访问量 6万+                                                                                          关注                                                                私信                                                                                                                           
页: [1]
查看完整版本: python定时发送QQ消息