CodeGym /Các khóa học /Python SELF VI /Tạo nhắc nhở và thông báo dựa trên thời gian

Tạo nhắc nhở và thông báo dựa trên thời gian

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Triển khai cơ chế nhắc nhở

Sử dụng module datetimetimedelta

Đôi khi, để tạo một nhắc nhở, bạn cần tính toán còn lại bao nhiêu thời gian đến sự kiện. Đây là lúc timedelta phát huy tác dụng:

Python

from datetime import datetime, timedelta

# Tính thời gian nhắc nhở
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"Bạn cần gửi nhắc nhở vào: {reminder_time}")

Thông báo đơn giản qua console

Bước đầu tiên là thông báo đơn giản. Tất nhiên, nó không "xịn" như push notification trên điện thoại thông minh, nhưng bắt đầu như vậy là ổn.

Python

import time

def simple_reminder(message, delay):
    print(f"Sau {delay} giây sẽ có thông báo...")
    time.sleep(delay)
    print(f"Nhắc nhở: {message}")

simple_reminder("Đã đến lúc họp!", 10)

2. Sử dụng schedule cho nhắc nhở định kỳ

Khi bạn cần nhắc nhở lặp lại, schedule sẽ trở thành trợ thủ. Bạn có thể đặt các khoảng thời gian như hàng ngày hoặc hàng tuần:

Python

import schedule
import time

def meeting_reminder():
    print("Nhắc nhở: bạn sắp có cuộc họp!")

# Nhắc nhở mỗi ngày vào 14:30
schedule.every().day.at("14:30").do(meeting_reminder)

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

3. Thông báo bằng thời gian sử dụng thư viện plyer

Để làm cho thông báo "thật hơn", chúng ta có thể sử dụng thư viện plyer để gửi thông báo hệ thống:

Python

from plyer import notification
import time

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

# Ví dụ sử dụng
plyer_notification("Nhắc nhở!", "Đã đến lúc họp.")

Hàm notification.notify() sẽ hiển thị một thông báo tiêu chuẩn của hệ điều hành.

4. Nhắc nhở gửi email

Để gửi thông báo qua email trong Python, chúng ta sử dụng module smtplib. Trong ví dụ tiếp theo, chúng ta sẽ thiết lập gửi nhắc nhở qua email bằng cách sử dụng máy chủ 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 = "Nhắc nhở nhiệm vụ"
    body = "Đây là nhắc nhở tự động: đừng quên hoàn thành nhiệm vụ của bạn hôm nay."

    # Tạo email
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Kết nối với máy chủ SMTP và gửi email
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())
    
    print("Nhắc nhở đã được gửi qua email.")

# Đặt lịch gửi nhắc nhở mỗi ngày lúc 8:30 sáng
schedule.every().day.at("08:30").do(send_email_reminder)

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

Ở đây, send_email_reminder() gửi nhắc nhở qua email. Hãy cấu hình địa chỉ người gửi, người nhận và máy chủ SMTP. Phương pháp này cho phép tự động hóa việc gửi thông báo qua email một cách dễ dàng.

5. Nhắc nhở qua Telegram

Để gửi nhắc nhở qua Telegram, bạn có thể sử dụng API của nó. Trong ví dụ này, chúng ta sẽ gửi thông báo đến một chat trên Telegram bằng cách sử dụng requests.

Cài đặt:

  1. Tạo bot trong Telegram thông qua BotFather và nhận API_TOKEN.
  2. Tìm CHAT_ID của bạn bằng cách gửi tin nhắn đến bot và nhận ID chat qua API.
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Nhắc nhở: hôm nay bạn có một nhiệm vụ quan trọng!"

    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("Nhắc nhở đã được gửi qua Telegram.")
    else:
        print("Lỗi khi gửi nhắc nhở tới Telegram.")

# Đặt lịch gửi nhắc nhở mỗi ngày lúc 9:00 sáng
schedule.every().day.at("09:00").do(send_telegram_reminder)

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

Bây giờ, mỗi ngày lúc 9:00 sáng, bot sẽ gửi thông báo đến chat Telegram đã chỉ định.

6. Mẹo bổ sung về cấu hình thông báo

  1. Xử lý lỗi: Thêm xử lý lỗi khi gửi thông báo, ví dụ, kiểm tra kết nối đến máy chủ email hoặc Telegram.
  2. Ghi log: Sử dụng thư viện logging để ghi lại các sự kiện nhắc nhở. Điều này sẽ giúp bạn theo dõi khi nào nhắc nhở thực sự được gửi.
  3. Cài đặt linh hoạt: Nếu bạn dự định sử dụng nhắc nhở trong dự án, hãy tạo một hàm để thiết lập thời gian và phương pháp thông báo động, để dễ dàng thay đổi cấu hình.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION