From 3428fe930a71a8a912f963ee805a85d50d730ec4 Mon Sep 17 00:00:00 2001 From: brobert Date: Fri, 17 Oct 2025 14:28:08 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20maneja=20comandos=20desconocidos=20con?= =?UTF-8?q?=20encabezado=20emoji=20y=20ayuda=20r=C3=A1pida?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- src/services/command.ts | 9 ++++++-- .../services/command.unknown-help.test.ts | 23 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 tests/unit/services/command.unknown-help.test.ts diff --git a/src/services/command.ts b/src/services/command.ts index d5228a5..6c76c86 100644 --- a/src/services/command.ts +++ b/src/services/command.ts @@ -5,7 +5,8 @@ import { TaskService } from '../tasks/service'; import { GroupSyncService } from './group-sync'; import { ContactsService } from './contacts'; import { ICONS } from '../utils/icons'; -import { padTaskId, codeId, formatDDMM, bold, italic } from '../utils/formatting'; +import { padTaskId, codeId, formatDDMM, bold, italic, code, section } from '../utils/formatting'; +import { getQuickHelp } from './messages/help'; import { IdentityService } from './identity'; import { AllowedGroups } from './allowed-groups'; import { Metrics } from './metrics'; @@ -1012,9 +1013,13 @@ export class CommandService { } if (action !== 'nueva') { + try { Metrics.inc('commands_unknown_total'); } catch {} + const header = `❓ ${section('Comando no reconocido')}`; + const cta = `Prueba ${code('/t ayuda')}`; + const help = getQuickHelp(); return [{ recipient: context.sender, - message: `Acción ${rawAction || '(vacía)'} no implementada aún` + message: [header, cta, '', help].join('\n') }]; } diff --git a/tests/unit/services/command.unknown-help.test.ts b/tests/unit/services/command.unknown-help.test.ts new file mode 100644 index 0000000..d835ad8 --- /dev/null +++ b/tests/unit/services/command.unknown-help.test.ts @@ -0,0 +1,23 @@ +import { describe, it, expect } from 'bun:test'; +import { CommandService } from '../../../src/services/command'; + +describe('CommandService - comando desconocido devuelve ayuda rápida', () => { + it('responde con encabezado y CTA a /t ayuda incluyendo quick help', async () => { + const res = await CommandService.handle({ + sender: '600000001', + groupId: '', + message: '/t qué tareas tengo hoy?', + mentions: [], + }); + + expect(Array.isArray(res)).toBe(true); + expect(res.length).toBeGreaterThan(0); + const msg = res[0].message; + + expect(msg).toContain('COMANDO NO RECONOCIDO'); + expect(msg).toContain('/t ayuda'); + expect(msg).toContain('/t ver mis'); + expect(msg).toContain('/t web'); + expect(msg).toContain('/t configurar'); + }); +});