Skip to content

Repository files navigation

bot-wp-arca

Bot de WhatsApp que interactúa con los servicios web de ARCA (ex-AFIP) para realizar consultas y operaciones fiscales en Argentina.

Características

  • Consulta de puntos de venta habilitados
  • Consulta de tipos de comprobantes, conceptos, documentos, IVA, monedas y tributos
  • Consulta de cotizaciones y último comprobante autorizado
  • Emisión de facturas electrónicas
  • Configuración de credenciales (CUIT, CRT, KEY) vía chat
  • Integración con IA (OpenAI-compatible API) para consultas generales
  • Envío de archivos y mensajes de WhatsApp
  • Panel web con QR para vincular el bot
  • Múltiples sesiones de usuario simultáneas

Requisitos

  • Bun (runtime, no Node.js)
  • Chromium (para whatsapp-web.js)
  • Cuenta de WhatsApp vinculada a un número telefónico
  • Certificados digitales de ARCA (.crt y .key)
  • CUIT válido habilitado para facturación electrónica

Instalación

  1. Clona el repositorio:
git clone https://github.com/tu-usuario/bot-wp-arca.git
cd bot-wp-arca
  1. Instala las dependencias:
bun install
  1. Crea un archivo .env basado en .env.example:
cp .env.example .env
  1. Configura las variables de entorno en .env (ver .env.example para la lista completa).

Inicio

bun run start

El bot inicia un servidor HTTP en el puerto configurado (APP_PORT). Accedé a http://localhost:<APP_PORT>/<APP_ENDPOINT> para ver el QR y vincular WhatsApp.

Comandos del bot

Comando Descripción
puntos venta Lista puntos de venta habilitados
tipo comprobante Tipos de comprobantes disponibles
tipo concepto Tipos de conceptos
tipo documento Tipos de documentos aceptados
tipo iva Alícuotas de IVA
tipo moneda Tipos de monedas
tipo opcionales Campos opcionales
tipo tributos Tipos de tributos
cotizacion [moneda] [fecha] Consulta cotización (ej: cotizacion DOL 20250101)
ultimo comprobante [pto_venta] [tipo] Último comprobante autorizado
facturar [pto_venta] [tipo] [concepto] [doc_tipo] [doc_nro] [importe_netos] [iva] [fecha] Emite factura electrónica
configuracion cuit [CUIT] Configura el CUIT
configuracion crt Envía el certificado CRT (adjunto)
configuracion key Envía la clave KEY (adjunto)
enviar [numero] [mensaje] Envía mensaje de WhatsApp
enviar archivo [numero] [mensaje] Envía archivo por WhatsApp
limpiar historial Limpia el historial del chat actual
limpiar chats Limpia historial de todos los chats (admin)
limpiar chats todos Limpia historial de todos los usuarios (admin)
ayuda Muestra todos los comandos

Arquitectura

App monoproceso en Bun. Punto de entrada: src/main.ts.

Archivo Rol
main.ts Servidor HTTP Bun + ciclo de vida del cliente WhatsApp
message.ts Enrutador de mensajes: comandos → tools, fallback → IA
ai.ts API OpenAI-compatible: chat, transcripción de audio, tool calling
tools.ts Funciones ARCA + schemas de herramientas para IA
arca.ts Cliente SOAP para servicios web de ARCA (WSAA, WSFE)
db.ts SQLite via bun:sqlite (chat_history, sessions, users)
file.ts Utilidad para guardar archivos en base64

Variables de entorno

Ver .env.example para la lista completa. Las más importantes:

Variable Descripción Default
APP_PORT Puerto del servidor 3000
APP_ENDPOINT Ruta del panel web (requerido)
APP_MASTER_KEYS Claves maestras para borrar sesiones (vacío)
APP_ADMIN_USERS Usuarios administradores (vacío)
APP_ONLY_USER_MESSAGES Solo procesar mensajes de usuarios false
APP_USE_OPENAI_API Habilitar integración con IA false
ARCA_WEBSERVICE_DIR Directorio de certificados ARCA webservice/
ARCA_FETCH_LIMIT Cantidad de reintentos ARCA 3

Docker

docker-compose up -d

El docker-compose.yml expone el puerto y pasa las variables de entorno desde .env.

Testing

No hay suite de tests configurada. Verificar con:

bunx tsc --noEmit

Licencia

MIT

About

Un bot de WhatsApp que interactúa con los servicios web de ARCA (Agencia de Recaudación y Control Aduanero) de Argentina para realizar consultas y operaciones fiscales.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages