Skip to content

Commit ea6907a

Browse files
authored
Merge pull request #8 from CapituloJaverianoACM/develop
Develop
2 parents 09ce6a5 + 5ae2bc6 commit ea6907a

File tree

10 files changed

+280
-152
lines changed

10 files changed

+280
-152
lines changed

.env.example

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ DEPLOY_TARGET=test # default to 'test' or 'prod' when running deploy-commands
1010
SMTP_API_KEY=
1111
SMTP_API_URL=
1212
SMTP_FROM=
13-
SMTP_API_TIMEOUT_MS=
13+
SMTP_API_TIMEOUT_MS=30000
14+
15+
# Railway Volume (Railway sets this automatically, use ./data for local dev)
16+
RAILWAY_VOLUME_MOUNT_PATH=/data

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ coverage/
88
.idea/
99

1010
config/
11+
data/

DOCUMENTATION.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -312,20 +312,22 @@ Este documento resume la documentación agregada a todo el proyecto del Bot de D
312312
- ✅ Ejemplo de flujo: User → /verify start → Rate limit check → Generate OTP → Send email (retry 3x) → Log success
313313

314314
### 📄 `src/config/store.ts`
315-
**Sistema de almacenamiento**
316-
- ✅ Descripción completa del sistema
315+
**Sistema de almacenamiento con Railway Volume**
316+
- ✅ Descripción completa del sistema de persistencia en filesystem local
317317
- ✅ JSDoc para interface `GuildConfig`
318318
- ✅ Nuevo campo `channels.alerts` - ID del canal de alertas administrativas
319319
- ✅ Nuevo campo `alertThreshold` - Porcentaje de error rate (0-100) para alertas automáticas
320320
- ✅ JSDoc para interface `ConfigFile`
321-
- ✅ Documentación de variables de AWS S3
322-
- ✅ JSDoc para función `streamToString()`
323-
- ✅ JSDoc actualizado para función `loadFromBucket()` - Incluye logging con métricas de latencia
324-
- ✅ JSDoc actualizado para función `saveToBucket()` - Incluye logging con métricas de latencia
321+
- ✅ Documentación de variable de entorno `RAILWAY_VOLUME_MOUNT_PATH` (default: ./data)
322+
- ✅ JSDoc para función `ensureVolumeDirectory()` - Crea directorio del volumen si no existe
323+
- ✅ JSDoc actualizado para función `loadFromFile()` - Carga desde filesystem con métricas de latencia
324+
- ✅ JSDoc actualizado para función `saveToFile()` - Guarda a filesystem con métricas de latencia y tamaño
325325
- ✅ JSDoc para función `getGuildConfig()`
326326
- ✅ JSDoc actualizado para función `upsertGuildConfig(config, requestId?)` - Acepta requestId opcional
327-
- ✅ Explicación del sistema de caché
328-
- ✅ Logging de operaciones S3 con códigos HTTP y duración
327+
- ✅ JSDoc para función `deleteGuildConfig(guildId, requestId?)` - Elimina configuración de guild
328+
- ✅ Explicación del sistema de caché en memoria
329+
- ✅ Logging de operaciones de filesystem con duración y tamaño de archivo
330+
- ✅ Sin dependencias externas (AWS SDK removido)
329331

330332
---
331333

MIGRATION_COMPLETE.md

Whitespace-only changes.

README.md

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
# 🤖 ACM Bot - Discord
44

5-
### Bot de Discord multipropósito con TypeScript y Bun
5+
### Bot de Discord multipropósito con TypeScript, Bun y Railway
66

77
[![TypeScript](https://img.shields.io/badge/TypeScript-5.5-blue?logo=typescript)](https://www.typescriptlang.org/)
88
[![Bun](https://img.shields.io/badge/Bun-Runtime-black?logo=bun)](https://bun.sh/)
99
[![Discord.js](https://img.shields.io/badge/Discord.js-14.25-5865F2?logo=discord)](https://discord.js.org/)
10+
[![Railway](https://img.shields.io/badge/Railway-Volume-blueviolet?logo=railway)](https://railway.app/)
1011
[![License](https://img.shields.io/badge/License-Private-red)]()
1112

1213
</div>
@@ -37,6 +38,8 @@
3738
- Validación de correos electrónicos
3839
- Prevención de reutilización de correos
3940
- Soporte SMTP y HTTP API
41+
- **Retry logic inteligente** (3 intentos automáticos)
42+
- **Rate limiting** (30s cooldown)
4043

4144
🎤 **Voice Master**
4245
- Canales de voz temporales personalizables
@@ -49,6 +52,19 @@
4952
- Notificaciones a roles específicos
5053
- Canal dedicado para anuncios
5154

55+
📊 **Monitoreo y Métricas** ⭐ NUEVO
56+
- Sistema de logging profesional con request IDs
57+
- Métricas en tiempo real (error rate, latencia)
58+
- **Alertas automáticas** al canal de admins
59+
- Comando `/metrics` para visualización
60+
- Tracking de errores por comando y tipo
61+
62+
💾 **Persistencia con Railway Volume** ⭐ NUEVO
63+
- Almacenamiento en volumen local (latencia ~2ms)
64+
- Sin dependencias externas (antes AWS S3)
65+
- Configuración automática en Railway
66+
- Backup y restauración sencillos
67+
5268
📅 **Gestión de Eventos**
5369
- Creación de eventos programados
5470
- Soporte para eventos externos y de voz
@@ -123,24 +139,24 @@ GUILD_ID_TEST=id_servidor_pruebas
123139
GUILD_ID_PROD=id_servidor_produccion
124140
125141
# SMTP (para verificación de email)
126-
SMTP_HOST=smtp.ejemplo.com
127-
SMTP_PORT=587
128-
SMTP_USER=tu_usuario
129-
SMTP_PASS=tu_contraseña
142+
SMTP_API_KEY=tu_smtp_api_key
143+
SMTP_API_URL=https://api.smtp2go.com/v3/email/send
130144
SMTP_FROM=noreply@ejemplo.com
145+
SMTP_API_TIMEOUT_MS=30000
131146
132-
# AWS S3 (opcional, para persistencia)
133-
AWS_S3_BUCKET_NAME=nombre_del_bucket
134-
AWS_ACCESS_KEY_ID=tu_access_key
135-
AWS_SECRET_ACCESS_KEY=tu_secret_key
136-
AWS_DEFAULT_REGION=us-east-1
147+
# Railway Volume (auto-configurado en Railway, usa ./data en local)
148+
RAILWAY_VOLUME_MOUNT_PATH=/data
137149
```
138150

151+
> **💡 Para Railway:** Solo necesitas crear un Volume en Settings → Volumes con mount path `/data`. Railway configura la variable automáticamente.
152+
>
153+
> **💡 Para desarrollo local:** El bot crea automáticamente la carpeta `./data` en el directorio del proyecto.
154+
139155
### Configuración Inicial del Servidor
140156

141157
1. **Ejecutar el comando de setup**
142158
```
143-
/setup
159+
/setup role_admin:@Admin role_junta:@Junta role_verify:@Verified ...
144160
```
145161

146162
2. **Configurar los siguientes elementos:**
@@ -162,9 +178,18 @@ AWS_DEFAULT_REGION=us-east-1
162178
| Comando | Descripción | Permisos |
163179
|---------|-------------|----------|
164180
| `/setup` | Configura roles y canales del bot | Administrador |
181+
| `/config-reset confirmacion:CONFIRMAR` | ⚠️ Elimina toda la configuración | Guild Owner |
165182
| `/presence set\|clear` | Configura la presencia del bot | Administrador |
166183
| `/clear [valor] [unidad]` | Elimina mensajes (por cantidad o tiempo) | Manage Messages |
167184

185+
### 📊 Monitoreo ⭐ NUEVO
186+
187+
| Comando | Descripción | Permisos |
188+
|---------|-------------|----------|
189+
| `/metrics` | Muestra métricas en tiempo real | Admin/Junta |
190+
191+
**Métricas mostradas:** Error rate (🔴🟡🟢), requests/errors, uptime, rate limits, top errores
192+
168193
### 📢 Comunicación
169194

170195
| Comando | Descripción | Permisos |
@@ -183,14 +208,10 @@ AWS_DEFAULT_REGION=us-east-1
183208

184209
| Comando | Descripción | Permisos |
185210
|---------|-------------|----------|
186-
| `/verify start [email]` | Inicia verificación por email | Usuario |
211+
| `/verify start [email]` | Inicia verificación (cooldown 30s) | Usuario |
187212
| `/verify code [otp]` | Completa la verificación | Usuario |
188213

189-
### 🛠️ Utilidades
190-
191-
| Comando | Descripción | Permisos |
192-
|---------|-------------|----------|
193-
| `/ping` | Verifica la latencia del bot | Usuario |
214+
**Mejoras:** Retry automático (3x), rate limiting, OTP 10min, logging completo
194215

195216
---
196217

0 commit comments

Comments
 (0)