python 给QQ好友定时发送消息

python 给QQ好友定时发送消息

  • 前言
    • 初衷
    • 代码
    • 效果
    • 后记

前言

在小编的上一篇python文章中提到了关于微信或者QQ的消息“轰炸”(其实我是想你也去看看,23333 [狗头保命]),那是简单版本,今天我要讲的是,发送消息定时任务的结合体。

初衷

看到网上有很多大神用python给女友每天给女朋友发送“糖衣炮弹”,我酸了(给自己一个大嘴巴子,在码代码的时候怎么能想这些,再说了,我的对象千千万,new一个对象就有了,哈哈哈),作为一个程序猿我想实现这一功能,准备工作:

  1. python3+ ,开发环境;
  2. 安装 pywin32 , pip install pywin32 用于控制window应用;
  3. 安装 requests , pip install requests 这个模块是用来网上找“糖衣炮弹”;
  4. 安装 APScheduler , pip install APScheduler 用于定时任务;
  5. 安装fake-useragent, pipi install fake-useragent 这个用于网上抓取伪装header 里面的User_Agent(爬虫常用);
  6. 网上的“糖衣炮弹”资源,小编用的青云客机器人(api免费)查询天气;

代码

  1. 此版本是用的QQ对话测试的,需要将聊天对象对话框,单独出来(现在版本的QQ都是多个对话框在一起的)
# !user/bin/env/python3
# -*- coding:utf-8 -*-

__author__ = 'heyu<[email protected]>'
__date__ = '2020/5/14'

import win32gui
import win32con
import win32clipboard as w
import requests,re,time
from fake_useragent import UserAgent
from apscheduler.schedulers.blocking import BlockingScheduler

'''添加剪切板文本'''
def setText(string):
    w.OpenClipboard() 
    w.EmptyClipboard()
    w.SetClipboardData(win32con.CF_UNICODETEXT,string)
    w.CloseClipboard()

'''执行发送操作'''
'''
    to:QQ消息接收人;
    msg:需要发送的消息
'''
def sendMsg(to,msg):
    setText(msg)
    qq = win32gui.FindWindow(None,to)
    win32gui.SendMessage(qq,258,22,2080193)
    win32gui.SendMessage(qq,770,0,0)
    win32gui.SendMessage(qq,win32con.WM_KEYDOWN,win32con.VK_RETURN,0) # 控制按键,按下
    win32gui.SendMessage(qq,win32con.WM_KEYUP,win32con.VK_RETURN,0) # 控制按键,放松

'''青云客机器人(免费api)'''
def qyk(msg):
    url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + msg
    ua = UserAgent()
    headers = {
        'User_Agent': ua.random # 伪装User_Agent信息
    }
    response = requests.get(url=url,headers = headers)
    response.encoding = 'utf-8'
    text = response.text
    info = re.findall(r'\"\[.*?\"',text)
    weather = info[0].replace('"','')
    return weather

'''定时任务'''
def timingJob(to,msg):
    scheduler = BlockingScheduler() # 创建调度器
    scheduler.add_job(sendMsg,'interval',seconds=30,args = [to,msg]) # interval间隔,10s
    # scheduler.add_job(sendMsg,'cron',hour='22-23',minute='49',second='*/10',args = [to,msg]) # cron定时,10s
    scheduler.start() # 开启定时任务

if __name__ == '__main__':
    to = input('请填写解接收人QQ :')
    msg = qyk('重庆天气')
    timingJob(to,msg)

效果

python 给QQ好友定时发送消息_第1张图片

后记

青云客的机器人是个“智障”,目前应该还是测试收集数据阶段,所以有很多逻辑不全面(不然怎么是免费的呢,还是给青云客的机器人开发人员点个赞)

你可能感兴趣的:(Python,python)