diff --git a/src/services/command.ts b/src/services/command.ts index 332de9a..51e0df3 100644 --- a/src/services/command.ts +++ b/src/services/command.ts @@ -1373,6 +1373,16 @@ Nota: nunca respondo en grupos; solo por privado.`; return { responses: [], ok: true }; } + // 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 {} + } + } catch {} + // Gating de grupos en modo 'enforce' (cuando CommandService se invoca directamente) if (isGroupId(context.groupId)) { try { (AllowedGroups as any).dbInstance = this.dbInstance; } catch { } diff --git a/tests/unit/db.test.ts b/tests/unit/db.test.ts index 8f94cfd..ca95fbc 100644 --- a/tests/unit/db.test.ts +++ b/tests/unit/db.test.ts @@ -71,7 +71,7 @@ describe('Database', () => { .query("PRAGMA table_info(users)") .all() .map((c: any) => c.name); - expect(columns).toEqual(['id', 'first_seen', 'last_seen']); + expect(columns).toEqual(['id', 'first_seen', 'last_seen', 'last_command_at']); }); test('tasks table should have required columns', () => {