JavaRush /Курсы /Python SELF /Создание напоминаний и уведомлений на основе времени

Создание напоминаний и уведомлений на основе времени

Python SELF
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. Гибкость настроек: Если планируете использовать напоминания в проекте, создайте функцию для динамической установки времени и способов уведомлений, чтобы иметь возможность менять настройки.
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Анатолий Уровень 63
25 февраля 2026
❤️