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:
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.
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ń:
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:
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.
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:
- Utwórz bota w Telegram przez BotFather i zdobądź
API_TOKEN. - Znajdź swój
CHAT_ID, wysyłając wiadomość botowi i odbierając ID chatu przez API.
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ń
- 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.
- Logowanie: Użyj biblioteki
loggingdo zapisywania zdarzeń przypomnień. To pomoże śledzić, kiedy faktycznie przypomnienia były wysyłane. - 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.
GO TO FULL VERSION