CodeGym /Curso de Java /Python SELF ES /Creación de recordatorios y notificaciones basadas en el ...

Creación de recordatorios y notificaciones basadas en el tiempo

Python SELF ES
Nivel 40 , Lección 3
Disponible

1. Implementación de mecanismos de recordatorio

Uso del módulo datetime y timedelta

A veces, para crear un recordatorio, necesitas calcular cuánto tiempo queda para un evento. Aquí es donde entra timedelta:

Python

from datetime import datetime, timedelta

# Cálculo de la hora del recordatorio
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"Tendrás que enviar un recordatorio en: {reminder_time}")

Notificación simple a través de la consola

El primer paso son notificaciones simples. Claro, no son tan "guapas" como las push notifications en un smartphone, pero para empezar están bien.

Python

import time

def simple_reminder(message, delay):
    print(f"En {delay} segundos seguirá el recordatorio...")
    time.sleep(delay)
    print(f"Recordatorio: {message}")

simple_reminder("¡Es hora de tu reunión!", 10)

2. Uso de schedule para recordatorios periódicos

Cuando necesitas que el recordatorio se repita, schedule se convierte en tu mejor amigo. Puedes configurar varios intervalos, como diariamente o semanalmente:

Python

import schedule
import time

def meeting_reminder():
    print("Recordatorio: ¡tienes una reunión pronto!")

# Recordatorio todos los días a las 14:30
schedule.every().day.at("14:30").do(meeting_reminder)

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

3. Notificaciones basadas en tiempo con la biblioteca plyer

Para hacer las notificaciones más "reales", podemos usar la biblioteca plyer para enviar notificaciones del sistema:

Python

from plyer import notification
import time

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

# Ejemplo de uso
plyer_notification("¡Recordatorio!", "Es hora de tu reunión.")

La función notification.notify() mostrará una notificación estándar del sistema operativo.

4. Recordatorios mediante el envío de correos electrónicos

Para enviar notificaciones por correo electrónico en Python se usa el módulo smtplib. En el siguiente ejemplo, configuraremos el envío de un recordatorio por correo utilizando un servidor 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 = "Recordatorio de tarea"
    body = "Esto es un recordatorio automático: no olvides completar tu tarea hoy."

    # Crear el mensaje
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Conectarse al servidor SMTP y enviar el correo
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())
    
    print("Recordatorio enviado por correo electrónico.")

# Programar el envío del recordatorio todos los días a las 8:30 AM
schedule.every().day.at("08:30").do(send_email_reminder)

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

Aquí, send_email_reminder() envía la notificación por correo electrónico. Configura la dirección del remitente, el destinatario y el servidor SMTP. Este método permite automatizar fácilmente el envío de notificaciones por email.

5. Recordatorio a través de Telegram

Para enviar recordatorios a través de Telegram puedes usar su API. En este ejemplo, mandamos una notificación al chat de Telegram usando requests.

Configuración:

  1. Crea un bot en Telegram a través de BotFather y consigue tu API_TOKEN.
  2. Encuentra tu CHAT_ID, enviando un mensaje al bot y obteniendo el ID del chat mediante la API.
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Recordatorio: ¡hoy tienes una tarea importante!"

    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("Recordatorio enviado a través de Telegram.")
    else:
        print("Error al enviar el recordatorio a Telegram.")

# Programar el envío del recordatorio todos los días a las 9:00 AM
schedule.every().day.at("09:00").do(send_telegram_reminder)

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

Ahora, todos los días a las 9:00 AM, el bot enviará una notificación al chat de Telegram especificado.

6. Consejos adicionales para configurar notificaciones

  1. Manejo de errores: Agrega manejo de errores para enviar notificaciones, por ejemplo, verifica la conexión al servidor de correo electrónico o a Telegram.
  2. Log: Usa la biblioteca logging para registrar los eventos de recordatorios. Esto te ayudará a rastrear cuándo se enviaron realmente los recordatorios.
  3. Flexibilidad de configuración: Si planeas usar recordatorios en un proyecto, crea una función para configurar dinámicamente la hora y los métodos de notificación, para que puedas cambiar fácilmente las configuraciones.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION