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

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

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

安装、导入库

  • pyautogui 库是一个可以控制键盘、鼠标的库。我们可以利用它实现自动发消息。
  • pyperclip 库可以将文本复制到剪贴板。
  • apscheduler 库可以创建定时任务

安装:

pip install pyautogui
pip install apscheduler


导入:

import time
import pyautogui as pg
import pyperclip as pc
from apscheduler.schedulers.blocking import BlockingScheduler


打开微信

打开微信设置,点击快捷键设置,我们会发现默认打开微信的快捷键是 “Ctrl + Alt + W”。因此,我们可以输入快捷键来打开微信。

快捷键格式:

pg.hotkey(*keys)


我们输入打开微信的快捷键:

pg.hotkey('ctrl', 'alt', 'w')


找到女朋友

进入微信后,按下快捷键 “Ctrl + F” 即可打开搜索界面。

pg.hotkey('ctrl', 'f')



然后,在这里输入你的女朋友的昵称,按下回车键即可进入聊天。


在 pyautogui 中,有以下几种方式输入字符:

# 输入多个英文字母,不能同时输入字母和特殊键位
pg.typewrite('keys')
# 输入单个字母,可以按下特殊键位
pg.typewrite(['k', 'e', 'y', 's', 'enter'])
# 只能输入一个字母或特殊键
pg.press('enter')


但是以上方法都无法输入中文。

一种解决方式是使用你的输入法输入中文。

pg.typewrite('nvpengyou ')# 空格用于选中第一项



另一种是用 pyperclip 库复制中文,再用快捷键粘贴。

pc.copy('女朋友')
pg.hotkey('ctrl', 'v')



我们选择使用第二种。

然后,我们按下 Enter 键,选择聊天。

pg.press('enter')


发送消息

  • 同样,我们首先复制要发送的消息,然后粘贴按下 Enter 发送。
pc.copy('晚安')
pg.hotkey('ctrl', 'v')
pg.press('enter')


退出微信

  • 发完消息后,别忘了隐藏微信。因为打开微信、隐藏微信用的都是同一快捷键,如果不隐藏,那么下次发时将会隐藏微信,什么也发不出去。
pg.hotkey('ctrl', 'alt', 'w')


获取系统时间

  • 我们将上面的代码封装到一个函数 main() 中。然后,通过循环来获取系统时间来判断当前系统时间是否为我们指定的时间,如果为指定的时间,那么我们将调用main函数开始为女朋友发送消息。
if __name__ == '__main__':
    # 循环获取当前时间,如果为指定时间我们将调用main函数为女朋友发送晚安消息
    while True:
        hour = time.localtime()
        now_time = time.strftime("%H:%M:%S", hour)
        # print(f'\r{now_time}')
        # 如果时间为半夜12点,则给女朋友发消息
        if now_time == send_time:
            print(f'时间已到:{send_time},开始为女朋友发送消息!')
            main()
            print("任务结束!")
            break

添加任务中,cron 表示重复在指定时间执行任务。如上面代码则是每天 0 时 0 分执行任务。

完整代码

import time
import pyautogui as pg
import pyperclip as pc
from apscheduler.schedulers.blocking import BlockingScheduler
# 操作间隔为1秒
pg.PAUSE = 1
name = '女朋友'
msg = '晚安'
send_time = '00:00:00'
def main():
    # 打开微信
    pg.hotkey('ctrl', 'alt', 'w')
    pg.hotkey('ctrl', 'f')
    # 找到女朋友
    pc.copy(name)
    pg.hotkey('ctrl', 'v')
    pg.press('enter')
    # 发送消息
    pc.copy(msg)
    pg.hotkey('ctrl', 'v')
    pg.press('enter')
    # 隐藏微信
    pg.hotkey('ctrl', 'alt', 'w')
if __name__ == '__main__':
    # 循环获取当前时间,如果为指定时间我们将调用main函数为女朋友发送晚安消息
    while True:
        hour = time.localtime()
        now_time = time.strftime("%H:%M:%S", hour)
        # print(f'\r{now_time}')
        # 如果时间为半夜12点,则给女朋友发消息
        if now_time == send_time:
            print(f'时间已到:{send_time},开始为女朋友发送消息!')
            main()
            print("任务结束!")
            break


  • 此代码在 Windows7 Python3.9 版本 下调试通过。
  • 效果:

相关文章
|
6月前
|
监控 安全 机器人
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
91 0
|
1月前
|
API Python
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
|
8月前
|
Linux Shell Python
crontab定时执行python脚本不成功解决方案
crontab定时执行python脚本不成功解决方案
|
8月前
|
Python
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
278 2
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
|
9月前
|
数据采集 Python
技巧 | python定时发送邮件(自动添加附件)针不戳
技巧 | python定时发送邮件(自动添加附件)针不戳
技巧 | python定时发送邮件(自动添加附件)针不戳
|
9月前
|
数据采集 XML 人工智能
|
12月前
|
jenkins 测试技术 持续交付
【实测】python模拟jenkins的定时设置时间库: 【 python_jenkins_monitor 】
【实测】python模拟jenkins的定时设置时间库: 【 python_jenkins_monitor 】
|
小程序 C# Python
【优化】C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除
【优化】C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除
97 0
|
Java C++ Python
详解Python函数的作用域是干嘛的
Python是静态作用域语言,尽管它自身是一个动态语言。也就是说,在Python中变量的作用域是由它在源代码中的位置决定的,这与C有些相似,但是Python与C在作用域方面的差异还是非常明显的。
Python定时发送信息到微信
Python定时发送信息到微信