Emojis propios de la app
Los emojis que subes en tu aplicación se pueden usar en cualquier servidor donde publique tu bot, sin gastar un hueco de emojis de ese servidor. Paridad con Discord: mismo formato de cable, misma sintaxis <:nombre:id> en el contenido del mensaje.
Límites
- 2.000 emojis por aplicación (límite blando, se comprueba al crear).
- 256 KB de tamaño máximo de archivo.
- Tipos de contenido:
image/png,image/jpeg,image/gif,image/webp. - Nombre: 2–32 caracteres, juego
[a-zA-Z0-9_]. Único por app, sin distinguir mayúsculas:BotIconyboticonchocan.
Detección de animación
El flag animated lo establece el servidor a partir del tipo de contenido de la subida. Todo lo subido como image/gif se considera animado. El cliente no puede cambiarlo. Cuando referencies un emoji animado en el contenido del mensaje, usa el prefijo <a:nombre:id> (idéntico a Discord).
Endpoints REST (para el bot)
La API de bots ofrece acceso de solo lectura a los emojis de tu aplicación. Autentícate con Authorization: Bot {token}.
GET /applications/{application.id}/emojis
GET /applications/{application.id}/emojis/{emoji.id} Forma de la respuesta (las entradas de la lista y el GET individual usan la misma forma de Discord):
{
"id": "1199283740192847360",
"name": "thinking_orange",
"animated": false,
"user": { "id": "...", "username": "you" },
"managed": false,
"available": true
} Crear, modificar y eliminar no están expuestos en la API de bots. Las rutas de Discord POST /applications/{id}/emojis, PATCH y DELETE devuelven 404 en GameVox. Toda la gestión de emojis pasa por el portal (abajo); tenemos previsto exponer los endpoints de escritura con la forma de Discord cuando la canalización de moderación del portal sea lo bastante estable como para funcionar sin supervisión humana.
Usar emojis en los mensajes
Referencia los emojis de la app en content igual que los del servidor:
// Estático
"hello <:thinking_orange:1199283740192847360>"
// Animado (fíjate en el `a:` inicial)
"thanks <a:wave_orange:1199283740192847361>" Para las reacciones, pasa nombre:id en la ruta del emoji codificada en URL de PUT /channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me, igual que en Discord.
Flujo de subida en el portal
El portal sube los emojis por la misma canalización de URL prefirmada que los avatares y los iconos de app:
POST /api/uploads/presignconpurpose=bot_app_emojiyapplication_id.- Envía el archivo con
PUTa la URL de S3 devuelta. POST /api/uploads/completecon elfile_iddevuelto.POST /developer-portal/applications/{id}/emojiscon{name, file_id}.
El servidor comprueba que el prefijo de s3_key del archivo coincide con bot-emojis/{application_id}/, así que un file_id filtrado de otra app no supera la vinculación.
Almacenamiento
Se guarda en bot-emojis/{application_id}/{file_id}.{ext} en el bucket público gamevox-files-prod. Las filas con borrado lógico dejan el objeto de S3 en su sitio; los objetos huérfanos los recoge un proceso en segundo plano.