diff --git a/data/bot.db b/data/bot.db index 4aa3852..dc70e72 100644 Binary files a/data/bot.db and b/data/bot.db differ diff --git a/src/bot/commands/task.ts b/src/bot/commands/task.ts index d8673d1..a66a493 100644 --- a/src/bot/commands/task.ts +++ b/src/bot/commands/task.ts @@ -1,5 +1,5 @@ import { sendMessage } from '../utils/messaging'; -import { createTask, assignTask, completeTask } from '../../services/taskService'; +import { createTask, assignTask, completeTask, getPendingTasks } from '../../services/taskService'; export function handleTaskCommand(body: string, sender: string, groupId: string, linkedGroups: Set) { if (groupId && linkedGroups.has(groupId)) { @@ -35,8 +35,21 @@ export function handleTaskCommand(body: string, sender: string, groupId: string, const taskId = args[0]; completeTask(parseInt(taskId)); sendMessage(sender, `Tarea ${taskId} marcada como completada`); + } else if (action === 'mostrar' || !action) { + // Handle /tarea or /tarea mostrar + const user = `@${sender.split('@')[0]}`; // Default to the sender + const tasks = getPendingTasks(user); + + if (tasks.length === 0) { + sendMessage(sender, 'No tienes tareas pendientes.'); + } else { + const taskList = tasks.map((task) => { + return `- Tarea ${task.id}: ${task.description}${task.dueDate ? ` (para el ${task.dueDate})` : ''}`; + }).join('\n'); + sendMessage(sender, `Tus tareas pendientes:\n${taskList}`); + } } else { - sendMessage(sender, 'Acción no reconocida. Usa /tarea nueva, /tarea asignar, o /tarea completar.'); + sendMessage(sender, 'Acción no reconocida. Usa /tarea nueva, /tarea asignar, /tarea completar, o /tarea mostrar.'); } } } diff --git a/src/bot/utils/api.ts b/src/bot/utils/api.ts index f66e194..99e348e 100644 --- a/src/bot/utils/api.ts +++ b/src/bot/utils/api.ts @@ -34,7 +34,7 @@ export async function fetchGroups(communityId: string): Promise> { // Save the group to the database execute( 'INSERT OR REPLACE INTO groups (id, name, linked_parent) VALUES (?, ?, ?)', - [group.id, group.name || 'Unnamed Group', group.linkedParent] // Provide a default name if missing + [group.id, group.subject || 'Unnamed Group', group.linkedParent] // Provide a default name if missing ); } } diff --git a/src/services/taskService.ts b/src/services/taskService.ts index cf1f4e8..eb28ff9 100644 --- a/src/services/taskService.ts +++ b/src/services/taskService.ts @@ -7,7 +7,7 @@ export function createTask(sender: string, description: string, assignedTo?: str [description, assignedTo || null, dueDate || null, false] ); - const taskId = result.lastInsertRowId; + const taskId = result.lastInsertRowid; return { id: taskId, description, @@ -37,3 +37,11 @@ export function completeTask(taskId: number) { export function getTasks() { return query('SELECT * FROM tasks'); } + +// Get pending tasks for a specific user +export function getPendingTasks(assignedTo: string) { + return query( + 'SELECT * FROM tasks WHERE assigned_to = ? AND completed = FALSE', + [assignedTo] + ); +}