Vai al contenuto principale

Strumento gratuito

Formattazione testo Telegram, con l'escaping già fatto

Nel messaggio c'è un prezzo, un trattino e un punto, e la Bot API risponde "can't parse entities". MarkdownV2 riserva 18 caratteri, e una frase normale di solito ne contiene quattro o cinque. Scrivi il messaggio qui, scegli grassetto, spoiler o blocco di codice, e copia l'output con ognuno di quei caratteri già escapato.

Scrivi il tuo messaggio

Seleziona il testo e applica uno stile, oppure scrivi i tag a mano. La casella lavora nella sintassi HTML di Telegram, quindi quello che modifichi è già valido per uno dei due output. L'anteprima è un'immagine del messaggio, non un pulsante di invio: da qui non esce nulla dal tuo browser.

Caratteri 198 su 4096

Telegram conta i caratteri visibili, quindi il markup è gratis. Le entity e i tag di formattazione non pesano sul limite.

Anteprima
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.
Tocca uno spoiler per svelarlo, come farebbe chi legge.

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||\.

Invia con parse_mode=MarkdownV2. Ogni carattere riservato nel testo normale è escapato; dentro un frammento di codice lo sono solo la barra rovesciata e il backtick.

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>.

Invia con parse_mode=HTML. C'è meno da escapare, ed è il motivo per cui quasi tutte le librerie lo usano di default.

La sintassi, in entrambi i parse mode

Telegram accetta tre parse mode. Markdown è quello storico e copre quattro stili; MarkdownV2 e HTML li coprono tutti e dieci. Questa tabella mette MarkdownV2 e HTML uno accanto all'altro.

StileMarkdownV2HTML
Grassetto*bold*<b>bold</b>
Corsivo_italic_<i>italic</i>
Sottolineato__underline__<u>underline</u>
Barrato~strike~<s>strike</s>
Spoiler||hidden||<tg-spoiler>hidden</tg-spoiler>
Codice in linea`code`<code>code</code>
Blocco di codice```python code ```<pre><code class="language-python">code</code></pre>
Citazione a blocco>quoted line<blockquote>quoted</blockquote>
Link in linea[text](https://example.com)<a href="https://example.com">text</a>
Emoji personalizzata![👍](tg://emoji?id=5368324170671202286)<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>

Sottolineato e corsivo non si annidano direttamente in MarkdownV2, perché __ e _ si scontrano al confine. Usa HTML quando ti servono entrambi sullo stesso tratto di testo.

Perché MarkdownV2 continua a rifiutare il tuo messaggio

MarkdownV2 riserva diciotto caratteri e, fuori da un'entity di codice, ciascuno di essi deve essere preceduto da una barra rovesciata, anche dove sarebbe impossibile leggerlo come markup. L'elenco è _ * [ ] ( ) ~ ` > # + - = | { } . ! e, dato che è il carattere di escape stesso, la barra rovesciata.

Due di questi fanno inciampare quasi tutti. Il punto chiude la maggior parte delle frasi. Il trattino compare in date, intervalli, flag e parole composte. Una nota di rilascio che dice "Fixed: the 2.4-rc build" contiene tre caratteri riservati in nove parole, e l'API rifiuta l'intero messaggio invece di lasciar passare il testo.

Le regole cambiano dentro un'entity, ed è il secondo errore classico. In un frammento o in un blocco di codice solo la barra rovesciata e il backtick sono speciali, quindi escapare il resto lì dentro lascia barre visibili nel tuo codice. Dentro le parentesi di un link o di un'emoji personalizzata lo sono solo la parentesi di chiusura e la barra rovesciata. Lo strumento qui sopra applica la regola giusta per ogni contesto, ed è proprio quello che un trova e sostituisci non sa fare.

Se niente di tutto questo ti convince, usa HTML. Escapa tre caratteri, &, < e >, e si annida senza ambiguità. L'unico motivo per preferire MarkdownV2 è che si legge meglio nel controllo di versione.

Il limite di 4096 caratteri conta il testo, non il markup

Un messaggio di testo Telegram contiene 4096 caratteri. La formattazione viaggia come entity accanto al testo e non dentro di esso, quindi i tag, gli asterischi e le barre rovesciate che vedi nell'output non contano. Il contatore qui sopra mostra la lunghezza visibile, cioè il numero che Telegram controlla.

Accanto ci sono due limiti che vale la pena conoscere prima di costruire un mittente. Una didascalia di un media contiene 1024 caratteri, quindi un messaggio formattato che da solo ci sta larghissimo viene rifiutato appena alleghi un'immagine. Un messaggio oltre il limite non viene troncato: l'API restituisce un errore e non invia nulla.

Domande

Vale per i post nei canali e le chat normali, o solo per i bot?

La tabella della sintassi vale per tutto ciò che invia tramite la Bot API o una libreria client. Se scrivi tu dentro Telegram, l'app ha il suo menu di formattazione e MarkdownV2 non lo vedi mai. Questo strumento serve al caso in cui a inviare è qualcos'altro, che vuole il testo già formattato.

Quale parse mode conviene usare?

HTML, salvo motivi contrari. Escapa tre caratteri invece di diciotto, si annida in modo prevedibile e quando sbagli di solito vedi un tag invece di perdere il messaggio. MarkdownV2 si legge meglio in un file sorgente, ed è l'argomento onesto a suo favore.

Perché il messaggio è partito ma ha perso la formattazione?

Quasi sempre manca il parse_mode. Senza di esso Telegram tratta il testo come letterale, quindi asterischi e tag compaiono come caratteri. Imposta parse_mode su MarkdownV2 o HTML nella chiamata di invio, secondo l'output che hai copiato.

Posso annidare il grassetto in un link, o il corsivo nel grassetto?

Sì, in entrambi i parse mode, con un'eccezione: sottolineato e corsivo insieme in MarkdownV2 richiedono un aggiramento, perché i delimitatori si scontrano. I frammenti e i blocchi di codice non ammettono nessun altro stile al loro interno, in nessuno dei due modi.

Cos'è l'ID emoji personalizzata e dove lo trovo?

È l'ID numerico di un'emoji personalizzata Premium, e lo leggi da un messaggio che contiene già quell'emoji, non da un catalogo pubblico. Chi invia deve avere Telegram Premium, oppure essere un bot proprietario del pacchetto di sticker. Tutti gli altri vedono il carattere di ripiego che hai avvolto.

Quello che scrivo qui viene caricato da qualche parte?

No. La conversione gira nel tuo browser e la pagina non ha passaggio di invio, account né archiviazione. Chiudi la scheda e il messaggio non c'è più.

Continua da qui

Anche questi gratis: Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .

Se la formattazione serve per un messaggio che stai per mandare a 200 persone

Il testo già escapato è la metà piccola di un invio in massa. La metà grande è spedirlo da un account a cui le persone rispondono davvero, dosare il ritmo perché Telegram resti tranquillo, e raccogliere le risposte da qualche parte che non sia un telefono. Di quella parte si occupa Entergram: account Telegram personali veri invece di un bot, ognuno sul proprio proxy, e le risposte che arrivano in una sola interfaccia accanto alla scheda del contatto.

Guarda come funzionano gli invii in massa