Bot de Telegram para monitoreo de notificaciones judiciales del PJ Paraguay. Multi-tenant con onboarding conversacional, audit log, y polling automático. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.8 KiB
Prompt para Claude Code — Agregar comando /exp al bot
Tarea
Agregar la feature "detalle de expediente por número" al bot de Telegram.
Contexto
El reconocimiento del 22/05/2026 confirmó todos los endpoints necesarios.
Ver csj_client_nuevos_metodos.py en la raíz del proyecto — tiene el código
listo para integrar con documentación inline.
Cambios requeridos
1. En csj_client.py
a) Agregar después de la clase NotificacionPendiente:
- Clase
CasoJudicial(vercsj_client_nuevos_metodos.py) - Clase
ActuacionCaso(vercsj_client_nuevos_metodos.py)
b) Agregar dentro de la clase CSJClient:
- Método
buscar_expedientes()(vercsj_client_nuevos_metodos.py) - Método
listar_actuaciones()(vercsj_client_nuevos_metodos.py)
c) El import de httpx ya existe. No agregar dependencias nuevas.
2. En telegram_bot.py
Agregar el comando /exp con este comportamiento:
/exp 198 → busca número 198 sin filtrar por año
/exp 198/2026 → busca número 198, año 2026
/exp carlos → busca por carátula (texto, no número)
Mensaje de respuesta cuando encuentra un expediente:
📂 Exp. {numero}/{anio}
{caratula}
{circunscripcion} | {estado}
Últimas actuaciones:
• {fecha} — {tipo}: {descripcion_actuacion}
• {fecha} — {tipo}: {descripcion_actuacion}
• {fecha} — {tipo}: {descripcion_actuacion}
({total} actuaciones en total)
Mostrar máximo 3 actuaciones más recientes (las primeras del response, que ya vienen ordenadas por fecha descendente).
Cuando encuentra múltiples expedientes (búsqueda por carátula):
Se encontraron {N} expedientes para "{búsqueda}":
1. Exp. {numero}/{anio} — {caratula_truncada_50_chars}
{circunscripcion} | {estado}
2. ...
Para ver detalle: /exp {numero}/{anio}
Mostrar máximo 5 resultados. Si hay más, indicar cuántos hay en total.
Cuando no encuentra nada:
No encontré expedientes para "{búsqueda}".
Probá con la carátula o con número/año.
3. En CLAUDE.md
Agregar /exp a la lista de comandos de Telegram.
Parsing del argumento del comando
def parsear_argumento_exp(arg: str) -> dict:
"""
Parsea el argumento del comando /exp.
Retorna dict con claves posibles:
- numero (int): número de expediente
- anio (int): año del expediente
- caratula (str): texto para buscar por carátula
Ejemplos:
"198" → {"numero": 198}
"198/2026" → {"numero": 198, "anio": 2026}
"carlos" → {"caratula": "carlos"}
"198/26" → {"numero": 198, "anio": 2026} # año de 2 dígitos → 2000+anio
"""
Notas importantes
- Usar
scrub()deutils/sanitize.pyen cualquier log que incluya contenido de respuestas del PJ - El comando solo responde al
TELEGRAM_CHAT_IDautorizado (igual que el resto) - Si
listar_actuaciones()falla perobuscar_expedientes()tuvo éxito, mostrar igual los datos del caso sin actuaciones (degradación elegante) incluirNotificaciones=falsesiempre (no mezclar con notificaciones)- Truncar carátulas largas a 60 caracteres con "..." en listados
- Fechas en formato DD/MM/YYYY
Qué NO hacer
- No agregar paginación interactiva (botones "siguiente página") en esta versión
- No agregar descarga de documentos en esta versión
- No cambiar nada del flujo de notificaciones existente
- No agregar dependencias nuevas
Verificación
Después de implementar, verificar:
/exp 198responde con el caso correcto/exp 198/2026responde con el caso correcto/exp carlosmuestra lista de casos con "carlos" en carátula/exp 999999/1900responde "No encontré expedientes"- Sin credenciales en logs (verificar con LOG_LEVEL=DEBUG)
- Agrega
/expa la lista de comandos en CLAUDE.md