Na versão beta 13.0.283320 do Telegram para macOS, lançada em 15 de outubro, um novo ecrã de QR code de perfil foi introduzido. No código, ele é chamado de QR studio: o fundo e o padrão ao redor do código são compostos por um presente colecionável, um emoji premium ou uma cor. Na mesma tela, há um interruptor "Remove message fee": ele transforma o QR code e o link gerado a partir dele em um passe para ignorar a taxa de mensagens — quem o utiliza pode enviar mensagens ao proprietário gratuitamente. Isso se aplica àqueles que cobram Telegram Stars por mensagens recebidas e àqueles que lhes enviam mensagens. Por enquanto, as funções estão disponíveis apenas na beta para Mac, e não na esquema de API aberta.
O que apareceu na versão 13.0.283320
A beta do macOS é distribuída através do feed de atualizações mac-updates.telegram.org. Em 15 de outubro, três versões foram lançadas consecutivamente: 283318 pela manhã, e 283320 e 283321 à tarde. A interface de ambas as funções aparece na 283320 — o módulo QrStudioUI e o arquivo principal NoPaidMessagesToken. As descrições dos tipos de API para o link gratuito já estavam no cliente desde a versão 283318 da manhã, mas sem a tela que as invocaria. A versão 283321 foi lançada quarenta minutos após a 283320 e manteve ambas as funções.
Os textos das novas telas na beta estão escritos diretamente no código em inglês; ainda não foram enviados para a plataforma de tradução. A exceção são duas mensagens de serviço do chat sobre o link gratuito: elas foram adicionadas ao arquivo de localização da mesma versão.
Como funciona o link sem taxa de mensagens
No Telegram, é possível definir um preço em Telegram Stars para mensagens de quem não está nos seus contatos. Para alguém específico, a taxa pode ser removida manualmente, adicionando a pessoa às exceções: na esquema de API, existe o método account.toggleNoPaidMessagesException para isso. A beta adiciona uma segunda forma: a exceção é concedida por um link, e não é necessário adicionar o interlocutor manualmente.
Isso é ativado pelo interruptor "Remove message fee" na tela do QR code. Depois disso, um token é incorporado ao código e ao link gerado a partir dele — no cliente, ele é chamado de noPaidMessagesToken. Quem abre esse link vê "You can now message …" com o nome do proprietário, e suas mensagens se tornam gratuitas. No chat, ambos recebem uma mensagem de serviço: o proprietário vê "… used your link to message you for free", e o remetente vê "You used …’s link to message for free".
A validade do token é definida pela mesma tela:
| String na beta | O que acontece |
|---|---|
| "Expire after 1 minute" | o código é válido por um minuto — "This code will expire in 1 minute" |
| "This code no longer expires" | o código é ilimitado |
| "New code created. The old one no longer works." | um novo código foi emitido, o link antigo parou de funcionar |
| "Restore message fee" | a taxa foi restaurada — "Your message fee applies again" |
O código de um minuto, aparentemente, é projetado para encontros presenciais: mostrar o QR na tela, permitir a leitura — e, após um minuto, a imagem, se encaminhada, já não abre nada. Um link expirado ou revogado é recebido pelo cliente com a mensagem "This free message link is invalid or has expired", e o servidor, nesse caso, responde com o erro NO_PAID_MESSAGES_TOKEN_INVALID.
Qual a diferença para o link "adicionar aos contatos"
O Telegram há muito tempo possui um link de convite temporário para adicionar contatos: na esquema aberta, é contacts.exportContactToken, e a resposta exportedContactToken contém o endereço e o prazo de validade. Na beta, ao lado dele, apareceu o tipo exportedNoPaidMessagesToken e a mensagem de serviço messageActionNoPaidMessagesTokenUsed. Ambos não estão na esquema aberta da camada 230. Eles são estruturados da mesma forma — o servidor emite um token com um prazo, o cliente o insere no link — mas o token não adiciona aos contatos, apenas remove a taxa de mensagens.
Como o QR studio é estruturado
A tela de QR code de perfil no Telegram existe há muito tempo, e nos clientes móveis ela é colorida com temas de chat. O QR studio os substitui por três abas — no código qr_studio_tab_gift, qr_studio_tab_emoji e qr_studio_tab_color:
- Presente. Abaixo do código, há o fundo de um presente colecionável, e seu símbolo se repete ao redor — com o mesmo padrão que decora o próprio presente.
- Emoji. O padrão é composto por emojis premium — emojis personalizados de pacotes disponíveis com o Telegram Premium.
- Cor. Um fundo de uma paleta de cores.
Ao lado, há um botão de dia e noite: cada opção é desenhada em versões clara e escura. O cliente não armazena o conjunto de fundos, mas os solicita ao servidor em uma lista shareThemeBackdrops e os armazena em cache — o tipo possui uma variante shareThemeBackdropsNotModified, com a qual o servidor responde "a lista não foi alterada".
A personalização selecionada não é salva no dispositivo, mas no servidor, como uma configuração de conta: no núcleo, é ShareTheme com as variantes shareThemeGift, shareThemeEmoji, shareThemeColor e shareThemeDefault, e o presente para o fundo é transmitido pelo tipo inputShareThemeGift. Isso significa que o mesmo QR code terá a mesma aparência em todos os dispositivos do proprietário. O cartão pronto pode ser exportado como imagem — o módulo possui uma cena de exportação separada com o código, o padrão e um sticker.
A emissão de um novo código tem sua própria animação: as camadas da tela são chamadas QrStudioShatter, QrStudioAshLayer e QrStudioParticle. A julgar pelos nomes, o código antigo se desintegra em cinzas ao ser substituído, e um novo se forma em seu lugar — para um código que acabou de parar de funcionar, é uma despedida honesta.




