JavaRush /Курси /Python SELF UA /Створення нагадувань та повідомлень на основі часу

Створення нагадувань та повідомлень на основі часу

Python SELF UA
Рівень 40 , Лекція 3
Відкрита

1. Реалізація нагадувальних механізмів

Використання модуля datetime та timedelta

Іноді, щоб створити нагадування, потрібно розрахувати, скільки часу залишилося до події. Тут на допомогу приходить 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-сервер. Такий метод дозволяє легко автоматизувати відправку повідомлень на email.

5. Нагадування через Telegram

Для відправки нагадувань через Telegram можна використовувати його API. У цьому прикладі відправляємо повідомлення в Telegram-чат з використанням requests.

Налаштування:

  1. Створіть бота в Telegram через BotFather і отримаєте API_TOKEN.
  2. Знайдіть свій CHAT_ID, відправивши повідомлення боту та отримавши ID чату через API.
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. Гнучкість налаштувань: Якщо плануєте використовувати нагадування в проєкті, створіть функцію для динамічного встановлення часу та способів повідомлень, щоб мати можливість змінювати налаштування.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ