CodeGym /课程 /Python SELF ZH /基于时间的提醒和通知

基于时间的提醒和通知

Python SELF ZH
第 40 级 , 课程 3
可用

1. 实现提醒机制

使用模块 datetimetimedelta

有时候,为了创建一个提醒,你需要计算距离事件发生还有多长时间。这时 timedelta 就派上用场了:

Python

from datetime import datetime, timedelta

# 计算提醒时间
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"你需要在这个时间发送提醒: {reminder_time}")

通过控制台简单通知

第一步是简单的通知。当然,这些通知不如手机上的push通知那么"炫酷",但对于入门来说很合适。

Python

import time

def simple_reminder(message, delay):
    print(f"{delay}秒后将会发送提醒...")
    time.sleep(delay)
    print(f"提醒: {message}")

simple_reminder("该去参加会议了!", 10)

2. 使用 schedule 创建循环提醒

当你需要一个周期性的提醒时,schedule 是非常有用的工具。你可以设置不同的时间间隔,比如每天或每周:

Python

import schedule
import time

def meeting_reminder():
    print("提醒: 你即将有一次会议!")

# 每天14:30的提醒
schedule.every().day.at("14:30").do(meeting_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

3. 使用 plyer 的系统通知

为了让通知更加"真实",可以使用 plyer 库来发送系统通知:

Python

from plyer import notification
import time

def plyer_notification(title, message):
    notification.notify(
        title=title,
        message=message,
        app_name='Python Reminder',
        timeout=10
    )

# 示例用法
plyer_notification("提醒!", "该去参加会议了。")

函数 notification.notify() 将会展示系统的标准通知。

4. 通过电子邮件发送提醒

要在Python中通过电子邮件发送通知,可以使用 smtplib 模块。以下示例展示了如何配置通过SMTP服务器发送提醒。

Python

import smtplib
from email.mime.text import MIMEText
import schedule
import time

def send_email_reminder():
    sender = "your_email@example.com"
    receiver = "receiver_email@example.com"
    subject = "任务提醒"
    body = "这是一个自动提醒:别忘了今天完成你的任务。"

    # 创建消息
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # 连接到SMTP服务器并发送邮件
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())
    
    print("电子邮件提醒已发送。")

# 每天早上8:30发送提醒
schedule.every().day.at("08:30").do(send_email_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

在这里 send_email_reminder() 用于通过电子邮件发送通知。请配置发送者地址、接收者地址和SMTP服务器。这样的方法可以轻松自动化电子邮件通知。

5. 通过Telegram发送提醒

可以使用Telegram的API通过Telegram发送提醒。在以下示例中,使用 requests 发送通知到Telegram聊天。

设置步骤:

  1. 通过BotFather在Telegram中创建一个机器人并获取 API_TOKEN
  2. 向机器人发送消息以获取你的 CHAT_ID
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "提醒: 今天你有一个重要任务!"

    url = f"https://api.telegram.org/bot{api_token}/sendMessage"
    payload = {
        "chat_id": chat_id,
        "text": message
    }
    
    response = requests.post(url, data=payload)
    if response.status_code == 200:
        print("已通过Telegram发送提醒。")
    else:
        print("通过Telegram发送提醒时出错。")

# 每天早上9:00发送提醒
schedule.every().day.at("09:00").do(send_telegram_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

现在,每天早上9:00,机器人会向指定的Telegram聊天发送通知。

6. 设置通知的其他提示

  1. 错误处理:为通知发送添加错误处理,例如检查邮箱服务器或Telegram的连接。
  2. 日志记录:使用 logging 库记录提醒事件。这有助于跟踪提醒何时真正发送。
  3. 灵活的设置:如果你计划在项目中使用提醒,请创建一个函数,用于动态设置提醒时间和通知方式,以便可以轻松更改设置。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION