CodeGym /Kursy /Python SELF PL /Tworzenie przypomnień i powiadomień na podstawie czasu

Tworzenie przypomnień i powiadomień na podstawie czasu

Python SELF PL
Poziom 40 , Lekcja 3
Dostępny

1. Implementacja mechanizmów przypominających

Użycie modułu datetime i timedelta

Czasami, żeby stworzyć przypomnienie, musisz obliczyć, ile czasu zostało do wydarzenia. Tu z pomocą przychodzi timedelta:

Python

from datetime import datetime, timedelta

# Obliczanie czasu przypomnienia
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"Musisz wysłać przypomnienie o: {reminder_time}")

Proste powiadomienie przez konsolę

Pierwszy krok — to proste powiadomienia. Jasne, nie są tak "fajne" jak push-powiadomienia na smartfona, ale na początek wystarczy.

Python

import time

def simple_reminder(message, delay):
    print(f"Za {delay} sekund pojawi się przypomnienie...")
    time.sleep(delay)
    print(f"Przypomnienie: {message}")

simple_reminder("Czas na spotkanie!", 10)

2. Użycie schedule do cyklicznych przypomnień

Jeśli potrzebujesz, żeby przypomnienie się powtarzało, schedule będzie Twoim pomocnikiem. Możesz ustawić różne interwały, takie jak codziennie czy co tydzień:

Python

import schedule
import time

def meeting_reminder():
    print("Przypomnienie: za chwilę masz spotkanie!")

# Przypomnienie codziennie o 14:30
schedule.every().day.at("14:30").do(meeting_reminder)

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

3. Powiadomienia czasowe przy użyciu biblioteki plyer

Żeby zrobić powiadomienia bardziej "prawdziwymi", możemy użyć biblioteki plyer, aby wysyłać systemowe powiadomienia:

Python

from plyer import notification
import time

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

# Przykład użycia
plyer_notification("Przypomnienie!", "Czas na spotkanie.")

Funkcja notification.notify() wyświetli standardowe powiadomienie systemu operacyjnego.

4. Przypomnienie z wysyłką e-mail

Do wysyłania powiadomień e-mail w Pythonie używany jest moduł smtplib. W poniższym przykładzie skonfigurujemy wysyłkę przypomnienia przez e-mail, używając serwera 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 = "Przypomnienie o zadaniu"
    body = "To automatyczne przypomnienie: nie zapomnij ukończyć swojego zadania dzisiaj."

    # Tworzenie wiadomości
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Połączenie z serwerem SMTP i wysyłka wiadomości
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())
    
    print("Przypomnienie wysłane przez e-mail.")

# Zaplanuj wysyłanie przypomnienia codziennie o 8:30 rano
schedule.every().day.at("08:30").do(send_email_reminder)

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

Tutaj send_email_reminder() wysyła powiadomienie przez e-mail. Skonfiguruj adres nadawcy, odbiorcy i serwer SMTP. Taka metoda pozwala łatwo zautomatyzować wysyłanie e-mailowych przypomnień.

5. Przypomnienie przez Telegram

Do wysyłania przypomnień przez Telegram można użyć jego API. W tym przykładzie wysyłamy powiadomienie do chatu Telegram przy użyciu requests.

Konfiguracja:

  1. Utwórz bota w Telegram przez BotFather i zdobądź API_TOKEN.
  2. Znajdź swój CHAT_ID, wysyłając wiadomość botowi i odbierając ID chatu przez API.
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Przypomnienie: dziś masz ważne zadanie!"

    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("Przypomnienie wysłane przez Telegram.")
    else:
        print("Błąd wysyłania przypomnienia w Telegram.")

# Zaplanuj wysyłanie przypomnienia codziennie o 9:00 rano
schedule.every().day.at("09:00").do(send_telegram_reminder)

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

Teraz, codziennie o 9:00, bot będzie wysyłał powiadomienie do określonego chatu Telegram.

6. Dodatkowe wskazówki dotyczące konfiguracji powiadomień

  1. Obsługa błędów: Dodaj obsługę błędów związanych z wysyłaniem powiadomień, np. sprawdzaj połączenie z serwerem e-mail lub Telegram.
  2. Logowanie: Użyj biblioteki logging do zapisywania zdarzeń przypomnień. To pomoże śledzić, kiedy faktycznie przypomnienia były wysyłane.
  3. Elastyczność konfiguracji: Jeśli planujesz używać przypomnień w swoim projekcie, stwórz funkcję do dynamicznego ustawiania czasu i sposobów powiadomień, aby móc zmieniać konfiguracje.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION