diff --git a/src/services/command.ts b/src/services/command.ts index 00b66bb..d169151 100644 --- a/src/services/command.ts +++ b/src/services/command.ts @@ -47,11 +47,18 @@ export class CommandService { // Registrar interacción del usuario (last_command_at) para cualquier comando /t … try { - const ensured = ensureUserExists(context.sender, this.dbInstance); - if (ensured) { - try { - this.dbInstance.prepare(`UPDATE users SET last_command_at = strftime('%Y-%m-%d %H:%M:%f','now') WHERE id = ?`).run(ensured); - } catch {} + let usersTableExists = false; + try { + const row = this.dbInstance.query(`SELECT name FROM sqlite_master WHERE type='table' AND name='users'`).get() as any; + usersTableExists = !!row; + } catch {} + if (usersTableExists) { + const ensured = ensureUserExists(context.sender, this.dbInstance); + if (ensured) { + try { + this.dbInstance.prepare(`UPDATE users SET last_command_at = strftime('%Y-%m-%d %H:%M:%f','now') WHERE id = ?`).run(ensured); + } catch {} + } } } catch {} diff --git a/src/services/commands/index.ts b/src/services/commands/index.ts index 8aca6fd..e90aa2d 100644 --- a/src/services/commands/index.ts +++ b/src/services/commands/index.ts @@ -81,6 +81,14 @@ export async function route(context: RouteContext, deps?: { db: Database }): Pro // Ayuda (no requiere DB) if (action === 'ayuda') { + // Métrica de alias "info" (compatibilidad con legacy) + try { + if (rawAction === 'info' || rawAction === '?') { + Metrics.inc('commands_alias_used_total', 1, { action: 'info' }); + } + } catch {} + try { ResponseQueue.setOnboardingAggregatesMetrics(); } catch {} + const isAdvanced = (tokens[2] || '').toLowerCase() === 'avanzada'; const message = isAdvanced ? getFullHelp() @@ -150,6 +158,7 @@ export async function route(context: RouteContext, deps?: { db: Database }): Pro } // Desconocido → ayuda rápida + try { Metrics.inc('commands_unknown_total'); } catch {} return [{ recipient: context.sender, message: buildUnknownHelp()