CodeGym /Java Adesua /Python SELF TW /基於時間的提醒和通知創建

基於時間的提醒和通知創建

Python SELF TW
等級 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。以下示例使用 requests 向 Telegram 聊天發送通知。

設置:

  1. 通過 BotFather 創建 Telegram 機器人並獲取 API_TOKEN
  2. 向機器人發送消息以獲取聊天 ID,然後通過 API 獲取 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