Emojis propres à l’app
Les emojis téléversés sous votre application sont utilisables sur tous les serveurs où votre bot publie, sans consommer d’emplacement d’emoji sur ces serveurs. Parité Discord : même format de transport, même syntaxe <:nom:id> dans le contenu des messages.
Limites
- 2 000 emojis par application (limite souple, vérifiée à la création).
- 256 Ko de taille de fichier maximale.
- Types de contenu :
image/png,image/jpeg,image/gif,image/webp. - Nom : 2 à 32 caractères, jeu
[a-zA-Z0-9_]. Unique par app, sans distinction de casse :BotIconetboticonentrent en conflit.
Détection de l’animation
Le flag animated est défini côté serveur d’après le type de contenu du téléversement. Tout ce qui est envoyé en image/gif est considéré comme animé. Le client ne peut pas le forcer. Quand vous référencez un emoji animé dans le contenu d’un message, utilisez le préfixe <a:nom:id> (identique à Discord).
Endpoints REST (côté bot)
L’API bots expose un accès en lecture seule aux emojis de votre application. Authentifiez-vous avec Authorization: Bot {token}.
GET /applications/{application.id}/emojis
GET /applications/{application.id}/emojis/{emoji.id} Forme de la réponse (les entrées de liste et le GET unitaire utilisent la même forme que Discord) :
{
"id": "1199283740192847360",
"name": "thinking_orange",
"animated": false,
"user": { "id": "...", "username": "you" },
"managed": false,
"available": true
} La création, la modification et la suppression ne sont pas exposées sur l’API bots. Les routes Discord POST /applications/{id}/emojis, PATCH et DELETE renvoient 404 sur GameVox. Toute la gestion des emojis passe par le portail (ci-dessous) ; nous prévoyons d’exposer les endpoints d’écriture au format Discord dès que la chaîne de modération du portail sera assez stable pour tourner sans intervention humaine.
Utiliser les emojis dans les messages
Référencez les emojis d’app dans content exactement comme ceux d’un serveur :
// Statique
"hello <:thinking_orange:1199283740192847360>"
// Animé (notez le `a:` initial)
"thanks <a:wave_orange:1199283740192847361>" Pour les réactions, passez nom:id dans le chemin d’emoji encodé en URL de PUT /channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me, comme sur Discord.
Parcours de téléversement dans le portail
Le portail téléverse les emojis via la même chaîne d’URL présignée que les avatars et les icônes d’app :
POST /api/uploads/presignavecpurpose=bot_app_emojietapplication_id.- Envoyez le fichier en
PUTvers l’URL S3 renvoyée. POST /api/uploads/completeavec lefile_idrenvoyé.POST /developer-portal/applications/{id}/emojisavec{name, file_id}.
Le serveur vérifie que le préfixe de la s3_key du fichier correspond à bot-emojis/{application_id}/, si bien qu’un file_id fuité d’une autre app échoue à la liaison.
Stockage
Stocké dans bot-emojis/{application_id}/{file_id}.{ext} sur le bucket public gamevox-files-prod. Les lignes supprimées logiquement laissent l’objet S3 en place ; les objets orphelins sont récupérés par un processus de fond.