# 📋 Guía Paso a Paso: Crear Colección Guild Cache en Appwrite ## Paso 1: Acceder a tu Database 1. Ve a [Appwrite Console](https://cloud.appwrite.io) (o tu instancia) 2. Selecciona tu proyecto 3. En el menú lateral, haz clic en **Databases** 4. Selecciona tu database (el que tienes en `APPWRITE_DATABASE_ID`) ## Paso 2: Crear la Colección 1. Haz clic en **Create Collection** 2. **Collection Name**: `guild_cache` 3. **Collection ID**: Déjalo autogenerar o usa `guild_cache` 4. Haz clic en **Create** ## Paso 3: Agregar Atributos En la colección que acabas de crear, ve a la pestaña **Attributes** y crea estos 4 atributos: ### Atributo 1: guildId - Haz clic en **Create Attribute** → **String** - **Attribute Key**: `guildId` - **Size**: `32` - **Required**: ✅ Sí (marcado) - **Array**: ❌ No - Haz clic en **Create** ### Atributo 2: name - Haz clic en **Create Attribute** → **String** - **Attribute Key**: `name` - **Size**: `100` - **Required**: ✅ Sí (marcado) - **Array**: ❌ No - Haz clic en **Create** ### Atributo 3: prefix - Haz clic en **Create Attribute** → **String** - **Attribute Key**: `prefix` - **Size**: `10` - **Required**: ❌ No (desmarcado) - **Default value**: (déjalo vacío) - **Array**: ❌ No - Haz clic en **Create** ### Atributo 4: expiresAt - Haz clic en **Create Attribute** → **DateTime** - **Attribute Key**: `expiresAt` - **Required**: ✅ Sí (marcado) - **Array**: ❌ No - Haz clic en **Create** ⏳ **IMPORTANTE**: Espera unos segundos a que todos los atributos estén en estado **Available** antes de continuar. ## Paso 4: Crear Índices Ve a la pestaña **Indexes** y crea estos 2 índices: ### Índice 1: guildId (único) - Haz clic en **Create Index** - **Index Key**: `idx_guildId` - **Index Type**: **Unique** - **Attributes**: Selecciona `guildId` - **Order**: ASC - Haz clic en **Create** ### Índice 2: expiresAt - Haz clic en **Create Index** - **Index Key**: `idx_expiresAt` - **Index Type**: **Key** - **Attributes**: Selecciona `expiresAt` - **Order**: ASC - Haz clic en **Create** ## Paso 5: Configurar Permisos Ve a la pestaña **Settings** → **Permissions**: 1. Por defecto debería estar configurado como "API Key" 2. Si no, agrega estos permisos: - **Role**: `Any` - **Permissions**: Read, Create, Update, Delete (todas marcadas) ## Paso 6: Copiar el Collection ID 1. En la parte superior de la colección, verás el **Collection ID** 2. Cópialo (algo como `67xxxxxx` o `guild_cache` si lo personalizaste) ## Paso 7: Actualizar Variables de Entorno Agrega a tu `.env` (o Config Vars en Heroku): ```env APPWRITE_COLLECTION_GUILD_CACHE_ID=el_collection_id_que_copiaste ``` ## Paso 8: Verificar Para verificar que todo está bien: 1. Ve a la colección 2. Pestaña **Attributes**: Deberías ver 4 atributos (guildId, name, prefix, expiresAt) 3. Pestaña **Indexes**: Deberías ver 2 índices (idx_guildId, idx_expiresAt) ## Paso 9: Redeploy el Bot ```bash # Si es local npm run build npm start # Si es Heroku git add . git commit -m "chore: agregar APPWRITE_COLLECTION_GUILD_CACHE_ID" git push heroku main ``` ## ✅ Listo! Después del redeploy, busca en los logs: ``` ✅ Guild config guardada en caché (Appwrite) ``` --- ## 🐛 Solución de Problemas ### Error: "Attribute already exists" - El atributo ya existe, pasa al siguiente ### Error: "Index already exists" - El índice ya existe, pasa al siguiente ### Error: "Collection not found" - Verifica que el `APPWRITE_COLLECTION_GUILD_CACHE_ID` sea correcto ### No veo mensajes de caché en los logs - Verifica que todas las variables de Appwrite estén configuradas - Revisa que el Collection ID sea correcto - Comprueba que la colección tenga los permisos correctos