Pular para o conteúdo principal

Ferramenta gratuita

Formatação de texto no Telegram, com o escape já feito

Sua mensagem tem um preço, um hífen e um ponto final, e a Bot API responde com "can't parse entities". O MarkdownV2 reserva 18 caracteres, e uma frase comum costuma conter quatro ou cinco deles. Escreva a mensagem aqui, escolha negrito, spoiler ou bloco de código, e copie a saída com cada um desses caracteres já escapado.

Escreva sua mensagem

Selecione o texto e aplique um estilo, ou digite as tags você mesmo. A caixa funciona na sintaxe HTML do Telegram, então o que você edita já é válido para uma das duas saídas. A prévia é uma imagem da mensagem, não um botão de envio: nada daqui sai do seu navegador.

Caracteres 198 de 4096

O Telegram conta caracteres visíveis, então a marcação sai de graça. As entidades e as tags de formatação não entram no limite.

Prévia
Release 2.4 is out.
Fixed: the CSV import dropped rows ending in a comma.
Reported by three of you on the same day.
Run npm i -g entergram@2.4 to upgrade.
The migration note is boring but mandatory.
Toque num spoiler para revelá-lo, como faria quem lê.

MarkdownV2

*Release 2\.4 is out\.*
Fixed: the CSV import dropped rows ending in a comma\.
>Reported by three of you on the same day\.
Run `npm i -g entergram@2.4` to upgrade\.
The migration note is ||boring but mandatory||\.

Envie com parse_mode=MarkdownV2. Todo caractere reservado no texto comum está escapado; dentro de um trecho de código, só a barra invertida e a crase.

HTML

<b>Release 2.4 is out.</b>
Fixed: the CSV import dropped rows ending in a comma.
<blockquote>Reported by three of you on the same day.</blockquote>
Run <code>npm i -g entergram@2.4</code> to upgrade.
The migration note is <tg-spoiler>boring but mandatory</tg-spoiler>.

Envie com parse_mode=HTML. Há menos coisa para escapar, e é por isso que a maioria das bibliotecas o adota por padrão.

A sintaxe, nos dois parse modes

O Telegram aceita três parse modes. O Markdown é o antigo e cobre quatro estilos; MarkdownV2 e HTML cobrem os dez. Esta tabela põe MarkdownV2 e HTML lado a lado.

EstiloMarkdownV2HTML
Negrito*bold*<b>bold</b>
Itálico_italic_<i>italic</i>
Sublinhado__underline__<u>underline</u>
Tachado~strike~<s>strike</s>
Spoiler||hidden||<tg-spoiler>hidden</tg-spoiler>
Código em linha`code`<code>code</code>
Bloco de código```python code ```<pre><code class="language-python">code</code></pre>
Citação em bloco>quoted line<blockquote>quoted</blockquote>
Link em linha[text](https://example.com)<a href="https://example.com">text</a>
Emoji personalizado![👍](tg://emoji?id=5368324170671202286)<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>

Sublinhado e itálico não se aninham direto no MarkdownV2, porque __ e _ colidem na fronteira. Use HTML quando precisar dos dois no mesmo trecho de texto.

Por que o MarkdownV2 continua recusando sua mensagem

O MarkdownV2 reserva dezoito caracteres e, fora de uma entidade de código, cada um deles precisa vir precedido de uma barra invertida, até onde seria impossível lê-lo como marcação. A lista é _ * [ ] ( ) ~ ` > # + - = | { } . ! e, por ser o próprio caractere de escape, a barra invertida.

Dois deles derrubam quase todo mundo. O ponto final encerra a maioria das frases. O hífen aparece em datas, intervalos, flags e palavras compostas. Uma nota de versão que diz "Fixed: the 2.4-rc build" tem três caracteres reservados em nove palavras, e a API recusa a mensagem inteira em vez de deixar o texto passar.

As regras mudam dentro de uma entidade, e esse é o segundo erro comum. Num trecho ou bloco de código, só a barra invertida e a crase são especiais, então escapar o resto ali coloca barras visíveis no seu código. Dentro dos parênteses de um link ou de um emoji personalizado, só o parêntese de fechamento e a barra invertida são. A ferramenta acima aplica a regra certa por contexto, que é justamente o que um localizar e substituir não faz.

Se nada disso agrada, use HTML. Ele escapa três caracteres, &, < e >, e aninha sem ambiguidades. A única razão para preferir MarkdownV2 é que ele se lê melhor no controle de versão.

O limite de 4096 caracteres conta texto, não marcação

Uma mensagem de texto do Telegram comporta 4096 caracteres. A formatação viaja como entidades ao lado do texto, não dentro dele, então as tags, os asteriscos e as barras invertidas que você vê na saída não contam. O contador acima mostra o comprimento visível, que é o número que o Telegram confere.

Dois limites vizinhos valem a pena antes de você montar um enviador. Uma legenda de mídia comporta 1024 caracteres, então uma mensagem formatada que cabe com folga sozinha será recusada assim que você anexar uma imagem. Uma mensagem acima do limite não é cortada: a API devolve um erro e não envia nada.

Perguntas

Isso vale para posts de canal e conversas normais, ou só para bots?

A tabela de sintaxe vale para tudo que envia pela Bot API ou por uma biblioteca cliente. Se você digita dentro do Telegram, o app tem o próprio menu de formatação e você nunca vê MarkdownV2. Esta ferramenta é para o caso em que outra coisa faz o envio e precisa do texto já formatado.

Qual parse mode usar?

HTML, a menos que você tenha um motivo. Ele escapa três caracteres em vez de dezoito, aninha de forma previsível e, quando você erra, costuma aparecer uma tag visível em vez de a mensagem ser recusada. O MarkdownV2 se lê melhor num arquivo fonte, e esse é o argumento honesto a favor dele.

Por que minha mensagem foi enviada mas perdeu a formatação?

Quase sempre falta o parse_mode. Sem ele, o Telegram trata o texto como literal, e os asteriscos e as tags aparecem como caracteres. Defina parse_mode como MarkdownV2 ou HTML na chamada de envio, conforme a saída que você copiou.

Posso aninhar negrito dentro de um link, ou itálico dentro de negrito?

Sim, nos dois parse modes, com uma exceção: sublinhado e itálico juntos no MarkdownV2 exigem um contorno, porque os delimitadores colidem. Trechos e blocos de código não aceitam nenhum outro estilo dentro, em nenhum dos modos.

O que é o ID do emoji personalizado e onde consigo um?

É o ID numérico de um emoji personalizado Premium, e você o lê de uma mensagem que já contém o emoji, não de um catálogo público. Quem envia precisa de Telegram Premium, ou de ser um bot dono do pacote de figurinhas. Todo o resto vê o caractere alternativo que você envolveu.

Alguma coisa que eu digite aqui é enviada para algum lugar?

Não. A conversão roda no seu navegador e a página não tem etapa de envio, conta nem armazenamento. Fechou a aba, a mensagem acabou.

Continue por aqui

Também gratuitas: Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .

Se a formatação é para uma mensagem que você vai mandar para 200 pessoas

Texto pré-escapado é a metade pequena de uma transmissão. A metade grande é enviar de uma conta a que as pessoas realmente respondem, ditar um ritmo que deixe o Telegram tranquilo e recolher as respostas em algum lugar que não seja um celular. Essa parte é com a Entergram: contas pessoais reais do Telegram em vez de um bot, cada uma no próprio proxy, e as respostas chegando numa só interface ao lado do registro do contato.

Ver como funcionam as transmissões