Files
agents_and_robots/dev/issues/completed/0004-bot-avatar.md
T
egutierrez 2756557498 chore: renombrar issues a formato 4 dígitos (NNNN)
Se estandariza la numeración de todos los issues de 3 dígitos a 4 dígitos
(e.g. 005 → 0005, 010 → 0010) para mantener consistencia con la convención
definida en create_issue.md. Se actualiza el README con los nuevos nombres
y links. No hay cambios de contenido en los issues, solo renombrado.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:39:33 +00:00

70 lines
2.2 KiB
Markdown

# Plan: Editar fotos de perfil de los bots
## Objetivo
Poder actualizar el avatar (foto de perfil) y el display name de cada bot en Matrix
desde la CLI (`agentctl`) o desde un dev-script.
## Estado: COMPLETADO
---
## Cómo funciona en Matrix
- Endpoint: `PUT /_matrix/client/v3/profile/{userId}/avatar_url`
- Body: `{ "avatar_url": "mxc://..." }` — URI de contenido subido al Media repo
- Para subir una imagen: `POST /_matrix/media/v3/upload` con el body binario
y `Content-Type` de la imagen
- También se puede cambiar el display name:
`PUT /_matrix/client/v3/profile/{userId}/displayname`
La secuencia es:
1. Subir imagen → obtener `mxc://server/mediaID`
2. Establecer `avatar_url` en el perfil con esa URI
---
## Diseño
### CLI: `agentctl avatar <agent-id> <image-path>`
Nuevo subcomando en `cmd/agentctl/`:
```
agentctl avatar assistant-bot /path/to/photo.png
agentctl displayname assistant-bot "Assistant Bot"
```
### Shell: `shell/matrix/profile.go`
```go
// UploadMedia sube un archivo y devuelve la mxc:// URI
func UploadMedia(ctx, client, filePath string) (mxcURI string, err error)
// SetAvatar establece avatar_url en el perfil del bot
func SetAvatar(ctx, client, mxcURI string) error
// SetDisplayName cambia el displayname
func SetDisplayName(ctx, client, name string) error
```
Usa el cliente `mautrix.Client` ya existente en `shell/matrix/client.go`.
### Dev-script: `dev-scripts/avatar.sh`
```bash
#!/usr/bin/env bash
# Uso: ./dev-scripts/avatar.sh <agent-id> <image-path>
./bin/agentctl avatar "$1" "$2"
```
---
## Archivos a crear/modificar
- `shell/matrix/profile.go` — UploadMedia, SetAvatar, SetDisplayName
- `cmd/agentctl/avatar.go` — subcomando `avatar` y `displayname`
- `cmd/agentctl/main.go` — registrar los nuevos subcomandos en Cobra
- `dev-scripts/avatar.sh` — wrapper convenience
## Notas
- El token del bot necesita permiso de escritura en su propio perfil (normal por defecto)
- Formatos soportados: PNG, JPG, WebP — Matrix los acepta todos
- mautrix-go tiene métodos `client.UploadMedia()` y `client.SetAvatarURL()`;
usar esos directamente para evitar HTTP manual
- El comando debe cargar el token del bot desde las env vars (`MATRIX_TOKEN_<BOT>`)
igual que hace `cmd/launcher/`