一、引言

做这个的原因是因为有一个朋友特别喜欢熬夜,所以就写一个脚本,每天晚上定时提醒Ta睡觉。网上找了点资料,在别人基础上改了一下。效果图如下(视频放不了,gif过大):

二、python源代码

import win32clipboard as w
import win32con
import win32api
import win32gui
import time
import threading
import datetime
sentence = ['睡觉呀,冲呀!', '睡觉啦啦啦啦啦', '你是睡着了呢,还是睡着了呢,还是睡着了呢', '早点睡,明天你还要拯救地球呀。','别玩手机了,赶紧睡啦', '注意休息,早睡早起,精神好,人会更漂亮。',  '既睡之,则安之,我就不打扰了','其实你不必这样,睡觉对你来说就是重生。', '睡觉啦,熬夜不仅会让你日渐消瘦,还会让你会长胖哦。','睡觉啦,熬夜一时爽,熬后火葬场', '早睡早起,锻炼身体。', '黑夜不会亏待晚睡的人,因为它会让你脱发。','你想一夜暴富吗?那就跟我一起关灯睡觉吧', '没有足够的睡眠是成为不了公主的', '安啦!早点睡!', '我有一个小小的愿望,就是希望你能早点睡觉。','把所有的烦恼都抛掉,拉上窗帘,挂上月亮,好好睡一觉。', '月亮不睡你不睡,你是人间小美味?']# 轮询时间间隔:多久发一次信息。单位ms
sendMsgInterval = 6;
# 短暂的暂停时间,模拟人为操作,以防微信反应不过来
normalWaitingTime = 0.3;
# 检测取消口令
cancelToken = '已经睡觉啦';#把文字放入剪贴板
def setText(aString):w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_UNICODETEXT,aString)w.CloseClipboard()#模拟ctrl+V
def ctrlV():win32api.keybd_event(17,0,0,0) #ctrlwin32api.keybd_event(86,0,0,0) #Vwin32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)#释放按键win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)#模拟ctrl+C
def ctrlC():win32api.keybd_event(17,0,0,0) #ctrlwin32api.keybd_event(0x43,0,0,0) #Vwin32api.keybd_event(0x43,0,win32con.KEYEVENTF_KEYUP,0)#释放按键win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)#模拟alt+s
def altS():win32api.keybd_event(18,0,0,0)win32api.keybd_event(83,0,0,0)win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0)win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)# 模拟enter
def enter():win32api.keybd_event(13,0,0,0)win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)
#模拟单击
def click():win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
#模拟双击
def dbClick():win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)time.sleep(normalWaitingTime);win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
#移动鼠标的位置
def movePos(x,y):win32api.SetCursorPos((x,y))# 判断时间是不是准确的
def judgeCurrentTime ():d_time = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '00:00', '%Y-%m-%d%H:%M')d_time1 = datetime.datetime.strptime(str(datetime.datetime.now().date()) + '00:40', '%Y-%m-%d%H:%M')n_time = datetime.datetime.now()return n_time > d_time and n_time < d_time1def getCopyText():w.OpenClipboard()copy_text = w.GetClipboardData(win32con.CF_TEXT)w.CloseClipboard()return copy_text# 给好友发送信息
def openChatWindow(people):time.sleep(normalWaitingTime)print('打开聊天窗口')#获取鼠标当前位置hwnd = win32gui.FindWindow("WeChatMainWndForPC", None)win32gui.ShowWindow(hwnd,win32con.SW_SHOW)win32gui.MoveWindow(hwnd,0,0,1000,700,True)time.sleep(normalWaitingTime)#1.移动鼠标到通讯录位置,单击打开通讯录movePos(28,80)click()#2.移动鼠标到搜索框,单击,输入要搜索的名字movePos(148,35)click()setText(people)ctrlV()# 清空操作time.sleep(normalWaitingTime)setText('')time.sleep(1) #别问我为什么要停1秒,问就是给微信一个反应的时间,他反应慢反应不过来,其他位置暂停的原因同样# 3.选中联系人,进行聊天enter()time.sleep(normalWaitingTime)def sendMsg(count):global timer;time.sleep(normalWaitingTime)# 发信息前要检测是否取消movePos(400,450);time.sleep(normalWaitingTime)dbClick();time.sleep(normalWaitingTime);ctrlC();time.sleep(normalWaitingTime);shuangText = (getCopyText().decode('GB2312')).strip();# 点击聊天界面movePos(400,600);dbClick();time.sleep(normalWaitingTime);# 1. 轮询的第一种情况,正常发信息if len(shuangText) ==0:count = (count + 1) % (len(sentence));# 4.复制要发送的消息,发送setText(sentence[count])ctrlV()altS()time.sleep(normalWaitingTime)setText('')timer = threading.Timer(sendMsgInterval, sendMsg, [count])timer.start();# 2. 检测到对方发了取消指令,就停止发信息elif (shuangText == cancelToken):setText('好的呢,晚安~')time.sleep(normalWaitingTime)ctrlV()time.sleep(normalWaitingTime)altS()time.sleep(normalWaitingTime)setText('')print(shuangText, '取消了')timer.cancel()# 3. 如果对方发了其他消息(非图片和emoji表情),就通知她输入取消指令else:setText('如想取消,请输入指令: ' + cancelToken)ctrlV()altS()time.sleep(normalWaitingTime)setText('')timer = threading.Timer(sendMsgInterval, sendMsg, [count])timer.start();# 要发信息的对象名字
people= '清风'
# 为了遍历词条列表
count = -1;
# 打开聊天窗口
openChatWindow(people)
# 短暂的反应时间
time.sleep(3);
# 轮询发请求喊睡觉
sendMsg(-1)

注意:运行该代码之前,微信图标要放在桌面左上角。不然它点不到

三、结语

代码写到很简单,功能不是很齐全。并且需要自己每天在自己的电脑上跑这个项目。后面的人有需要,自己慢慢改进吧。

python脚本给微信好友自动发晚安消息相关推荐

  1. java借助Robot给微信好友自动发消息(可发送表情包)

    这个其实不光微信,QQ也是可以的,想一下平时如果想刷屏群聊,聊天不爽了想骂回去,惹女朋友生气了想不停的道歉,或者每天定时问候一下,这些如果都要自己手动操作也太麻烦了吧,还不如写一个程序解决了呢.(等等 ...

  2. 使用python给女朋友自动发晚安

    最近看到一篇微信推文,是关于python小程序的,就自己动手实现了一遍,在此记录一下: from __future__ import unicode_literalsfrom threading im ...

  3. 给微信好友自动发消息

    from __future__ import unicode_literals from threading import Timer from wxpy import * import reques ...

  4. Python实现公众号每日自动发早/晚安消息(详细教程)

    公众号每日自动发早/晚安消息(python实现) 文章目录 一.微信公众号测试号申请 二.文件的配置 1.config.py 2.getApi.py 三.其他文件(可直接使用) 1.sayGoodMo ...

  5. 女友让我每天半夜十二点给她发晚安?我用 Python 做了个定时发消息神器!怕她干嘛!

    最近,女友奇奇怪怪的要求越来越多了.竟然要我每天晚上十二点准时给她发晚安! 但是拥有 Python 的我怎么可能忍受得了这种煎熬呢!于是,我立马用 Python 做了一个自动发晚安神器! 安装.导入库 ...

  6. python查微信好友是否删除自己_微信 用脚本查看是否被微信好友删除 不用群发用Python脚本查微信被哪些好友删除...

    python3为什么不加锁也 数据同步不安全,在多线程下并非一定同步.网上有的是例子可以证明,自己搜个试试看就知道了. 用脚本快速查看自己被多少微信好友删除 找自己删除的微信好友方法:尽管,生命中无数 ...

  7. python给女朋友_python实现用微信每天给女朋友发晚安

    python实现用微信每天给女朋友发晚安 发布时间:2018-06-17 17:24, 浏览次数:311 , 标签: python 初学python,看到一个小脚本程序,就自己实现做个笔记 环境准备: ...

  8. python开发程序知道微信好友是否已读信息吗_用Python来检测微信好友是否拉黑你...

    Python Python开发 Python语言 用Python来检测微信好友是否拉黑你 来自知乎,作者:林萌 链接:https://www.zhihu.com/question/307914345/ ...

  9. 用Python更加了解微信好友

    运行平台: Windows   Python版本: Python3.6   IDE: Sublime Text 1.准备工作 1.1 库介绍 只有登录微信才能获取到微信好友的信息,本文采用wxpy该第 ...

最新文章

  1. 一文梳理视觉Transformer架构进展:与CNN相比,ViT赢在哪儿?
  2. (转)C#开发微信门户及应用(4)--关注用户列表及详细信息管理
  3. linq to sql 插入值,以及如何取回自增的ID
  4. 常用http状态码说明,status
  5. 数据库操作之整合Mybaties和事务讲解 5节课
  6. Spring自定义注解(验证身份证+性别+地区)
  7. Python实现多重弹窗脚本 整蛊朋友
  8. 微信小程序布局 底部位置固定例子
  9. 坚持#第303天~补起昨天的、顺便写今天的(昨天又在公司搞zabbix搞到了凌晨1点,结果搞忘了写博客),主要是zabbix监控
  10. 微信多开脚本2.0 批处理bat,可一键关闭微信
  11. there is the flag
  12. 写好商业计划书,融资就成功了一半!
  13. uboot利用uEnv.txt文件实现灵活功能(加载PL侧bit,修改uenvcmd,配置bootargs,配置bootm,配置bootz)
  14. Factory(工厂)模式
  15. 分布式Ruby解决之道 - DRb
  16. Python挑战游戏( PythonChallenge)闯关之路Level- 4
  17. matlab脚本文件求梯度,转:用MATLAB求梯度的二个实例
  18. Clojure CLR 入门
  19. 为什么腾讯微云上传文件会显示服务器繁忙呢,API - 微云
  20. (ISC)² 2021年会暨网络安全峰会

热门文章

  1. 带雨字的诗句 夜来风雨声,花落知多少
  2. 实现部分库函数(strlen、strcpy、strcmp、strcat、strstr...)
  3. CSS-background背景详解
  4. 计算机毕业设计Java电子商城系统(源码+系统+mysql数据库+lw文档)
  5. Python Tkinter:messagebox
  6. 【微信小程序】-- 使用 Git 管理项目(五十)
  7. tokenizer简介
  8. 荣获“中国 AI 企业知识产权百强榜” 思岚科技再受肯定
  9. 迪文串口屏的CFG文件怎么用?
  10. Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表