diff --git a/src/bot/commands/task.ts b/src/bot/commands/task.ts index 418a307..ead81be 100644 --- a/src/bot/commands/task.ts +++ b/src/bot/commands/task.ts @@ -47,10 +47,25 @@ export function handleTaskCommand(body: string, sender: string, groupId: string, } else { sendMessage(sender, 'Debes mencionar a un usuario para asignar la tarea. Ejemplo: /tarea asignar 1 @usuario'); } - } else if (action === 'completar') { + } else if (action === 'lista' || (!action && args.length === 1 && !isNaN(Number(args[0])))) { + // Handle both /tarea lista 14 and /tarea 14 const taskId = args[0]; + const task = getTaskById(parseInt(taskId)); + + if (!task) { + sendMessage(sender, `Tarea ${taskId} no encontrada`); + return; + } + + // Check if task is assigned to current user + const currentUser = `@${sender.split('@')[0]}`; + if (task.assignedTo !== currentUser) { + sendMessage(sender, `No puedes completar la tarea ${taskId} porque no está asignada a ti`); + return; + } + completeTask(parseInt(taskId)); - sendMessage(sender, `Tarea ${taskId} marcada como completada`); + sendMessage(sender, `✅ Tarea ${taskId} completada: ${task.description}`); } else if (action === 'mostrar' || !action) { // Handle /tarea or /tarea mostrar const user = `@${sender.split('@')[0]}`; // Default to the sender diff --git a/src/services/taskService.ts b/src/services/taskService.ts index d7a8c92..968d6c5 100644 --- a/src/services/taskService.ts +++ b/src/services/taskService.ts @@ -55,3 +55,12 @@ export function getPendingTasks(assignedTo: string) { [assignedTo] ); } + +// Get task by ID +export function getTaskById(taskId: number) { + const tasks = query( + 'SELECT * FROM tasks WHERE id = ?', + [taskId] + ); + return tasks[0] || null; +}