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
:
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.
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:
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:
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.
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:
-
Crea un bot en Telegram a través de BotFather y consigue tu
API_TOKEN
. -
Encuentra tu
CHAT_ID
, enviando un mensaje al bot y obteniendo el ID del chat mediante la API.
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
- 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.
-
Log: Usa la biblioteca
logging
para registrar los eventos de recordatorios. Esto te ayudará a rastrear cuándo se enviaron realmente los recordatorios. - 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.
GO TO FULL VERSION