女友让我每天半夜十二点给她发晚安?我用 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 版本 下调试通过。
  • 效果:

相关文章
|
监控 安全 机器人
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
238 0
|
7月前
|
消息中间件 NoSQL 调度
学Python的别告诉我你还不造celery是干嘛的
​写python的别告诉我你还不造celery干嘛的。Celery是一个简单、灵活且可靠的分布式任务队列系统,用于处理大量消息,提供实时处理,以及异步任务执行。其核心原理包括任务队列、消息传递、任务调度和任务执行。
|
4月前
|
测试技术 数据安全/隐私保护 网络虚拟化
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
干货 | 如何用python实现每天定时备份交换机配置文件? 真香~
|
6月前
|
运维 算法 jenkins
做一个可通过jenkins定时任务Cron表达式设置的python定时函数
用python代码,来解析jenkins定时任务表达式,并获取最近的执行任务时间戳
|
7月前
|
存储 SQL 关系型数据库
Python实现给qq自动发消息 终于有人来和我说早安晚安了吗...
Python实现给qq自动发消息 终于有人来和我说早安晚安了吗...
|
数据安全/隐私保护
Python--yagmail,我用这个模块每天定时给同事发邮件
Python--yagmail,我用这个模块每天定时给同事发邮件
150 0
|
7月前
|
API Python
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
做一个合格的男友,用python制作每天定时给女朋友发送邮箱问候
|
7月前
|
Linux Shell 调度
linux服务器定时执行python程序
linux服务器定时执行python程序
1094 0
|
Python
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
363 2
用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
|
数据采集 Python
技巧 | python定时发送邮件(自动添加附件)针不戳
技巧 | python定时发送邮件(自动添加附件)针不戳
技巧 | python定时发送邮件(自动添加附件)针不戳
下一篇
DataWorks