Há muito tempo tínhamos uma tarefa no backlog - mostrar os avatares de usuários, grupos e canais no painel pessoal e na página de vitória. Parece um detalhe, mas um detalhe que sempre me incomodava.

Você provavelmente conhece esses avatares padrão do Telegram - a primeira letra do nome em um belo fundo gradiente. Mas quando você os solicita pela API - a resposta é null. O Telegram simplesmente não os armazena nos servidores, o aplicativo cliente os desenha por conta própria.

Por isso, há muito tempo criamos nossos próprios placeholders simples e vivíamos com eles. Mas isso sempre me preocupava - não parecia com o Telegram, então não era bonito). Ontem finalmente entendi como funciona - ainda não implementamos, mas pelo menos ficou claro o que fazer.

Sei que no canal há construtores de TMA - esta dica pode economizar seu tempo.

O Telegram tem código aberto e literalmente tudo que é necessário está hardcoded: 7 gradientes e uma fórmula:
color_index = abs(peer_id) % 7
Pegue o peer_id, divida por 7, pegue o resto - você obtém o índice de cor de 0 a 6:
0 - 🔴 vermelho-rosa
1 - 🟠 laranja-amarelo
2 - 🟣 roxo-azul
3 - 🟢 verde
4 - 🩵 turquesa
5 - 🔵 azul
6 - 🩷 roxo-rosa


Outra nuance: para supergrupos/canais, a Bot API retorna chat_id com o prefixo -100, e a cor deve ser calculada a partir do peer_id real sem ele. Sem isso, a cor não será a mesma que o usuário vê no aplicativo.

〰️〰️〰️
Se você não tem avatar - marque-se nos comentários 😄