CodeGym /Curso Java /Python SELF PT /Criando lembretes e notificações baseados no tempo

Criando lembretes e notificações baseados no tempo

Python SELF PT
Nível 40 , Lição 3
Disponível

1. Implementando mecanismos de lembrete

Usando o módulo datetime e timedelta

Às vezes, para criar um lembrete, você precisa calcular quanto tempo falta para um evento. É aí que o timedelta entra em cena:

Python

from datetime import datetime, timedelta

# Calculando o horário do lembrete
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"Você precisa enviar um lembrete em: {reminder_time}")

Mensagem simples de notificação no console

O primeiro passo são notificações simples. Claro, não são tão "charmosas" como notificações push no smartphone, mas é um bom começo.

Python

import time

def simple_reminder(message, delay):
    print(f"Em {delay} segundos, você receberá um lembrete...")
    time.sleep(delay)
    print(f"Lembrete: {message}")

simple_reminder("Hora da reunião!", 10)

2. Usando schedule para lembretes periódicos

Quando você precisa de lembretes recorrentes, schedule é o seu melhor amigo. Você pode definir intervalos diferentes, como diário ou semanal:

Python

import schedule
import time

def meeting_reminder():
    print("Lembrete: você tem uma reunião em breve!")

# Lembrete todo dia às 14:30
schedule.every().day.at("14:30").do(meeting_reminder)

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

3. Notificações baseadas no tempo com a biblioteca plyer

Para fazer notificações mais "reais", podemos usar a biblioteca plyer para enviar notificações do 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
    )

# Exemplo de uso
plyer_notification("Lembrete!", "Hora da reunião.")

A função notification.notify() exibirá uma notificação padrão do sistema operacional.

4. Lembrete enviado por e-mail

Para enviar notificações por e-mail em Python usamos o módulo smtplib. No exemplo a seguir, vamos configurar o envio de lembretes por e-mail usando um 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 = "Lembrete de tarefa"
    body = "Isso é um lembrete automático: não se esqueça de concluir sua tarefa hoje."

    # Criando a mensagem
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Conexão com o servidor SMTP e envio do e-mail
    with smtplib.SMTP("smtp.example.com", 587) as server:
        server.starttls()
        server.login(sender, "your_password")
        server.sendmail(sender, receiver, msg.as_string())
    
    print("Lembrete enviado por e-mail.")

# Agendando o envio do lembrete todos os dias às 8:30 da manhã
schedule.every().day.at("08:30").do(send_email_reminder)

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

Aqui, a função send_email_reminder() envia um lembrete por e-mail. Configure o endereço do remetente, do destinatário e o servidor SMTP. Esse método facilita a automação de envio de notificações por e-mail.

5. Lembrete pelo Telegram

Para enviar lembretes via Telegram, você pode usar a API dele. Neste exemplo, enviamos uma notificação para um chat do Telegram usando requests.

Configuração:

  1. Crie um bot no Telegram através do BotFather e obtenha o API_TOKEN.
  2. Encontre seu CHAT_ID, enviando uma mensagem para o bot e obtendo o ID do chat pela API.
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Lembrete: hoje você tem uma tarefa 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("Lembrete enviado via Telegram.")
    else:
        print("Erro ao enviar lembrete via Telegram.")

# Agendando o envio do lembrete todos os dias às 9:00 da manhã
schedule.every().day.at("09:00").do(send_telegram_reminder)

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

Agora, todos os dias às 9:00 da manhã, o bot enviará uma notificação para o chat do Telegram configurado.

6. Dicas extras para configurar notificações

  1. Tratamento de erros: Adicione tratamento de erros para envio de notificações, por exemplo, verificando a conexão com o servidor de e-mail ou Telegram.
  2. Registro de logs: Use a biblioteca logging para registrar eventos de notificações. Isso ajuda a monitorar quando os lembretes realmente foram enviados.
  3. Configurações flexíveis: Se planeja usar lembretes em um projeto, crie uma função para definir dinamicamente horários e métodos de notificações, para permitir ajustes nas configurações.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION