feat: Restructure admin menu and enhance Vikunja integration

Restructures the admin menu into a primary and secondary menu for better user experience.
The primary menu now shows the most common actions.
The secondary menu contains less frequent admin commands.

Refactors the Vikunja module to be triggered by a menu button instead of a command.
Adds "edit task" functionality to the Vikunja module.
Fixes a bug where the button dispatcher was calling a non-existent function.
This commit is contained in:
google-labs-jules[bot]
2025-12-18 15:05:54 +00:00
parent f15b4661d2
commit c9ef9ab5b5
3 changed files with 133 additions and 72 deletions

View File

@@ -13,14 +13,26 @@ def get_owner_menu():
return InlineKeyboardMarkup(keyboard)
def get_admin_menu():
"""Crea el menú de botones para los Administradores."""
"""Crea el menú de botones principal para los Administradores."""
keyboard = [
[InlineKeyboardButton("📋 Ver Tareas (Vikunja)", callback_data='view_tasks')],
[InlineKeyboardButton("🏷️ Crear Tag NFC", callback_data='start_create_tag')],
[InlineKeyboardButton("📊 Estado del sistema", callback_data='view_system_status')],
[InlineKeyboardButton("⏳ Revisar Pendientes", callback_data='view_pending')],
[InlineKeyboardButton("📅 Agenda", callback_data='view_agenda')],
[InlineKeyboardButton("🏷️ Crear Tag", callback_data='start_create_tag')],
[InlineKeyboardButton("▶️ Más opciones", callback_data='admin_menu')],
]
return InlineKeyboardMarkup(keyboard)
def get_admin_secondary_menu():
"""Crea el menú secundario para Administradores."""
text = "Aquí tienes más opciones de administración:"
keyboard = [
[InlineKeyboardButton("📋 Gestionar Tareas (Vikunja)", callback_data='manage_vikunja')],
[InlineKeyboardButton("📊 Estado del sistema", callback_data='view_system_status')],
[InlineKeyboardButton("👥 Gestionar Usuarios", callback_data='manage_users')],
]
reply_markup = InlineKeyboardMarkup(keyboard)
return text, reply_markup
def get_team_menu():
"""Crea el menú de botones para los Miembros del Equipo."""
keyboard = [
@@ -43,14 +55,13 @@ def handle_start(user_role):
"""
welcome_message = "Hola, soy Talía. ¿En qué puedo ayudarte hoy?"
# Dependiendo del rol, llamamos a una función de menú diferente
if user_role == "owner":
menu = get_owner_menu()
elif user_role == "admin":
menu = get_admin_menu()
elif user_role == "team":
menu = get_team_menu()
else: # Por defecto, si no es ninguno de los anteriores, es un cliente
else:
menu = get_client_menu()
return welcome_message, menu