142 lines
3.7 KiB
Markdown
142 lines
3.7 KiB
Markdown
# 📋 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
|