diff --git a/app/calendar.py b/app/calendar.py index 6bd911b..a90662b 100644 --- a/app/calendar.py +++ b/app/calendar.py @@ -89,28 +89,3 @@ def create_event(summary, start_time, end_time, attendees, calendar_id=CALENDAR_ except HttpError as error: print(f"An error occurred: {error}") return None - - -def get_events_for_day(date, calendar_id=CALENDAR_ID): - """ - Fetches all events for a given day from the calendar. - """ - try: - time_min = date.isoformat() + "T00:00:00Z" - time_max = date.isoformat() + "T23:59:59Z" - - events_result = ( - service.events() - .list( - calendarId=calendar_id, - timeMin=time_min, - timeMax=time_max, - singleEvents=True, - orderBy="startTime", - ) - .execute() - ) - return events_result.get("items", []) - except HttpError as error: - print(f"An error occurred: {error}") - return [] diff --git a/app/llm.py b/app/llm.py index d5c4e38..7d79bb6 100644 --- a/app/llm.py +++ b/app/llm.py @@ -1,26 +1,15 @@ # app/llm.py -import openai -from app.config import OPENAI_API_KEY +from config import OPENAI_API_KEY def get_smart_response(prompt): """ Generates a smart response using an LLM. """ + if not OPENAI_API_KEY: return "OpenAI API key not configured." - openai.api_key = OPENAI_API_KEY - - try: - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": prompt}, - ], - ) - return response.choices[0].message.content.strip() - except Exception as e: - print(f"An error occurred with OpenAI: {e}") - return "I'm sorry, I couldn't generate a response right now." + print(f"Generating smart response for: {prompt}") + # TODO: Implement OpenAI API integration + return "This is a smart response." diff --git a/app/main.py b/app/main.py index ea0e186..fed794a 100644 --- a/app/main.py +++ b/app/main.py @@ -28,7 +28,7 @@ from modules.equipo import ( from modules.aprobaciones import view_pending, handle_approval_action from modules.servicios import get_service_info from modules.admin import get_system_status -from app.scheduler import setup_scheduler +from modules.print import print_handler # Enable logging logging.basicConfig( @@ -105,9 +105,6 @@ def main() -> None: application.add_handler(CommandHandler("print", print_handler)) application.add_handler(CallbackQueryHandler(button_dispatcher)) - # Set up the scheduler - setup_scheduler(application) - logger.info("Starting Talía Bot...") application.run_polling() diff --git a/app/modules/print.py b/app/modules/print.py index 2a97ee3..6182403 100644 --- a/app/modules/print.py +++ b/app/modules/print.py @@ -2,12 +2,19 @@ from telegram import Update from telegram.ext import ContextTypes -from app.permissions import is_admin +from ..permissions import is_admin +from ..config import TIMEZONE, CALENDAR_ID, N8N_WEBHOOK_URL async def print_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: """Handles the /print command.""" chat_id = update.effective_chat.id if is_admin(chat_id): - await update.message.reply_text("This is a restricted command for authorized users.") + config_details = ( + f"**Configuration Details**\n" + f"Timezone: `{TIMEZONE}`\n" + f"Calendar ID: `{CALENDAR_ID}`\n" + f"n8n Webhook URL: `{N8N_WEBHOOK_URL}`\n" + ) + await update.message.reply_text(config_details, parse_mode='Markdown') else: await update.message.reply_text("You are not authorized to use this command.") diff --git a/app/scheduler.py b/app/scheduler.py index 4fc791f..1996809 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -1,52 +1,27 @@ # app/scheduler.py -import datetime -import pytz -from telegram import Bot -from app.config import OWNER_CHAT_ID, TIMEZONE -from app.calendar import get_events_for_day +import schedule +import time +from datetime import datetime +from config import TIMEZONE -def format_event_time(start_time_str): - """ - Formats the event start time into a user-friendly format. - """ - if "T" in start_time_str: # It's a dateTime - dt_object = datetime.datetime.fromisoformat(start_time_str) - return dt_object.strftime("%I:%M %p") - else: # It's a date - return "All day" - - -async def send_daily_summary(context): +def send_daily_summary(): """ Sends the daily summary to the owner. """ - bot = context.bot - today = datetime.datetime.now(pytz.timezone(TIMEZONE)).date() - events = get_events_for_day(today) + print(f"[{datetime.now()}] Sending daily summary...") + # TODO: Implement the logic to fetch and send the summary - if not events: - summary = "Good morning! You have no events scheduled for today." - else: - summary = "Good morning! Here is your schedule for today:\n\n" - for event in events: - start = event["start"].get("dateTime", event["start"].get("date")) - formatted_time = format_event_time(start) - summary += f"- {event['summary']} at {formatted_time}\n" - - await bot.send_message(chat_id=OWNER_CHAT_ID, text=summary) - - -def setup_scheduler(application): +def main(): """ - Sets up the daily summary job. + Main function to run the scheduler. """ - tz = pytz.timezone(TIMEZONE) - job_queue = application.job_queue - job_queue.run_daily( - send_daily_summary, - time=datetime.time(hour=7, minute=0, tzinfo=tz), - chat_id=OWNER_CHAT_ID, - name="daily_summary", - ) + schedule.every().day.at("07:00").do(send_daily_summary) + + while True: + schedule.run_pending() + time.sleep(1) + +if __name__ == "__main__": + main() diff --git a/tasks.md b/tasks.md index c7ccbb3..9ee5054 100644 --- a/tasks.md +++ b/tasks.md @@ -31,8 +31,8 @@ This file tracks the development tasks for the Talía project. ## Phase 4: Integrations - [x] Implement `calendar.py` for Google Calendar integration. -- [x] Implement `llm.py` for AI-powered responses. -- [x] Implement `scheduler.py` for daily summaries. +- [ ] Implement `llm.py` for AI-powered responses. +- [ ] Implement `scheduler.py` for daily summaries. ## Log