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

2.2 KiB

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

// 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

#!/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/