mirror of
https://github.com/marcogll/talia_bot.git
synced 2026-01-13 13:25:19 +00:00
57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
# bot/modules/agenda.py
|
|
# Este módulo se encarga de manejar las peticiones relacionadas con la agenda.
|
|
# Permite obtener y mostrar las actividades programadas para el día.
|
|
|
|
import datetime
|
|
import logging
|
|
from bot.modules.calendar import get_events
|
|
from bot.config import WORK_GOOGLE_CALENDAR_ID, PERSONAL_GOOGLE_CALENDAR_ID
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def get_agenda():
|
|
"""
|
|
Obtiene y muestra la agenda del usuario para el día actual desde Google Calendar.
|
|
Diferencia entre eventos de trabajo (visibles) y personales (bloqueos).
|
|
"""
|
|
try:
|
|
logger.info("Obteniendo agenda...")
|
|
now = datetime.datetime.now(datetime.timezone.utc)
|
|
start_of_day = now.replace(hour=0, minute=0, second=0, microsecond=0)
|
|
end_of_day = start_of_day + datetime.timedelta(days=1)
|
|
|
|
logger.info(f"Buscando eventos de trabajo en {WORK_GOOGLE_CALENDAR_ID} y personales en {PERSONAL_GOOGLE_CALENDAR_ID}")
|
|
|
|
# Obtener eventos de trabajo (para mostrar)
|
|
work_events = get_events(start_of_day, end_of_day, calendar_id=WORK_GOOGLE_CALENDAR_ID)
|
|
|
|
# Obtener eventos personales (para comprobar bloqueos, no se muestran)
|
|
personal_events = get_events(start_of_day, end_of_day, calendar_id=PERSONAL_GOOGLE_CALENDAR_ID)
|
|
|
|
if not work_events and not personal_events:
|
|
logger.info("No se encontraron eventos de ningún tipo.")
|
|
return "📅 *Agenda para Hoy*\n\nTotalmente despejado. No hay eventos de trabajo ni personales."
|
|
|
|
agenda_text = "📅 *Agenda para Hoy*\n\n"
|
|
if not work_events:
|
|
agenda_text += "No tienes eventos de trabajo programados para hoy.\n"
|
|
else:
|
|
for event in work_events:
|
|
start = event["start"].get("dateTime", event["start"].get("date"))
|
|
if "T" in start:
|
|
time_str = start.split("T")[1][:5]
|
|
else:
|
|
time_str = "Todo el día"
|
|
|
|
summary = event.get("summary", "(Sin título)")
|
|
agenda_text += f"• *{time_str}* - {summary}\n"
|
|
|
|
if personal_events:
|
|
agenda_text += "\n🔒 Tienes tiempo personal bloqueado."
|
|
|
|
logger.info("Agenda obtenida con éxito.")
|
|
return agenda_text
|
|
except Exception as e:
|
|
logger.error(f"Error al obtener la agenda: {e}")
|
|
return "❌ Error al obtener la agenda. Por favor, intenta de nuevo más tarde."
|