En nuestro backlog teníamos una tarea pendiente: mostrar los avatares de usuarios, grupos y canales en el panel personal y en la página de victoria. Parece una tontería, pero una tontería que siempre me molestaba.

Seguramente conoces esos avatares estándar de Telegram: la primera letra del nombre sobre un bonito fondo degradado. Pero cuando los solicitas a través de la API, la respuesta es null. Telegram simplemente no los almacena en sus servidores; la aplicación cliente los dibuja por sí misma.

Por eso hace tiempo creamos nuestros propios marcadores de posición simples y vivimos con ellos. Pero siempre me preocupó: no se veía como Telegram, por lo tanto, no era bonito). Ayer finalmente entendí cómo funciona; aún no hemos implementado la solución, pero al menos ahora sé qué hacer.

Sé que en el canal hay constructores de TMA; este consejo puede ahorrarles tiempo.

Telegram tiene código abierto y literalmente tiene todo lo necesario hardcodeado: 7 degradados y una fórmula:
color_index = abs(peer_id) % 7
Tomas el peer_id, lo divides entre 7, tomas el resto y obtienes un índice de color de 0 a 6:
0 - 🔴 rojo-rosado
1 - 🟠 naranja-amarillo
2 - 🟣 violeta-azul
3 - 🟢 verde
4 - 🩵 turquesa
5 - 🔵 azul
6 - 🩷 violeta-rosado


Otro detalle: para supergrupos/canales, la API de Bot devuelve chat_id con el prefijo -100, y el color debe calcularse a partir del peer_id real sin él. Sin esto, el color no será el que el usuario ve en la aplicación.

〰️〰️〰️
Si no tienes avatar, ¡menciónate en los comentarios 😄