Bot de WhatsApp que interactúa con los servicios web de ARCA (ex-AFIP) para realizar consultas y operaciones fiscales en Argentina.
- 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
- 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
- Clona el repositorio:
git clone https://github.com/tu-usuario/bot-wp-arca.git
cd bot-wp-arca- Instala las dependencias:
bun install- Crea un archivo
.envbasado en.env.example:
cp .env.example .env- Configura las variables de entorno en
.env(ver.env.examplepara la lista completa).
bun run startEl 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.
| 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 |
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 |
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-compose up -dEl docker-compose.yml expone el puerto y pasa las variables de entorno desde .env.
No hay suite de tests configurada. Verificar con:
bunx tsc --noEmit