Wir hatten schon lange eine Aufgabe im Backlog - Avatare von Benutzern, Gruppen und Kanälen im persönlichen Konto und auf der Gewinnerseite anzuzeigen. Es scheint eine Kleinigkeit, aber eine Kleinigkeit, die mir immer ins Auge sprang.

Sie kennen sicher diese Standard-Avatare von Telegram - der erste Buchstabe des Namens auf einem schönen Farbverlaufshintergrund. Aber wenn man sie über die API abruft, kommt null zurück. Telegram speichert sie einfach nicht auf den Servern, die Client-App zeichnet sie selbst.

Deshalb haben wir schon lange eigene einfache Platzhalter erstellt und damit gelebt. Aber das hat mich immer gestört - es sah nicht wie Telegram aus, also nicht schön). Gestern habe ich endlich verstanden, wie es funktioniert - die Implementierung haben wir noch nicht gemacht, aber zumindest ist klar, was zu tun ist.

Ich weiß, dass es auf dem Kanal TMA-Builder gibt - dieser Hinweis könnte Ihnen Zeit sparen.

Telegram hat einen offenen Quellcode und darin ist buchstäblich alles hartcodiert, was man braucht: 7 Farbverläufe und eine Formel:
color_index = abs(peer_id) % 7
Nimm die peer_id, teile durch 7, nimm den Rest - du erhältst den Farbindex von 0 bis 6:
0 - 🔴 rot-rosa
1 - 🟠 orange-gelb
2 - 🟣 lila-blau
3 - 🟢 grün
4 - 🩵 türkis
5 - 🔵 blau
6 - 🩷 lila-rosa


Noch eine Nuance: Bei Supergruppen/Kanälen gibt die Bot API eine chat_id mit dem Präfix -100 zurück, aber die Farbe muss von der echten peer_id ohne dieses Präfix berechnet werden. Ohne dies wäre die Farbe nicht die, die der Benutzer in der App sieht.

〰️〰️〰️
Wenn Sie keinen Avatar haben - markieren Sie sich in den Kommentaren 😄