Outil gratuit
Le formatage Telegram, avec l'échappement déjà fait
Votre message contient un prix, un trait d'union et un point final, et la Bot API répond "can't parse entities". MarkdownV2 réserve 18 caractères, et une phrase ordinaire en contient quatre ou cinq. Écrivez le message ici, choisissez le gras, un spoiler ou un bloc de code, puis copiez la sortie avec chacun de ces caractères déjà échappé.
Écrivez votre message
Sélectionnez du texte et appliquez un style, ou tapez les balises vous-même. La zone fonctionne dans la syntaxe HTML de Telegram, donc ce que vous éditez est déjà valide pour l'une des deux sorties. L'aperçu est une image du message, pas un bouton d'envoi : rien ne quitte votre navigateur.
Caractères 198 sur 4096
Au-delà de 4096 caractères. Telegram refusera ce message en un seul envoi : coupez-le ou déplacez la partie longue dans un fichier.
Telegram compte les caractères visibles, donc le balisage est gratuit. Les entités et les balises de formatage ne comptent pas dans la limite.
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.
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||\.
Envoyez avec parse_mode=MarkdownV2. Chaque caractère réservé du texte ordinaire est échappé ; dans un bloc de code, seuls la barre oblique inverse et l'accent grave le sont.
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>.
Envoyez avec parse_mode=HTML. Moins de choses à échapper, ce qui explique pourquoi la plupart des bibliothèques le choisissent par défaut.
La syntaxe, dans les deux parse modes
Telegram accepte trois parse modes. Markdown est l'ancien et gère quatre styles ; MarkdownV2 et HTML gèrent les dix. Cette table met MarkdownV2 et HTML côte à côte.
| Style | MarkdownV2 | HTML |
|---|---|---|
| Gras | *bold* | <b>bold</b> |
| Italique | _italic_ | <i>italic</i> |
| Souligné | __underline__ | <u>underline</u> |
| Barré | ~strike~ | <s>strike</s> |
| Spoiler | ||hidden|| | <tg-spoiler>hidden</tg-spoiler> |
| Code en ligne | `code` | <code>code</code> |
| Bloc de code | ```python code ``` | <pre><code class="language-python">code</code></pre> |
| Citation | >quoted line | <blockquote>quoted</blockquote> |
| Lien en ligne | [text](https://example.com) | <a href="https://example.com">text</a> |
| Emoji personnalisé |  | <tg-emoji emoji-id="5368324170671202286">👍</tg-emoji> |
Souligné et italique ne s'imbriquent pas simplement en MarkdownV2, parce que __ et _ entrent en collision à la frontière. Passez en HTML quand il vous faut les deux sur le même texte.
Pourquoi MarkdownV2 refuse encore votre message
MarkdownV2 réserve dix-huit caractères et, en dehors d'une entité de code, chacun d'eux doit être précédé d'une barre oblique inverse, même là où il ne pourrait pas être lu comme du balisage. La liste est _ * [ ] ( ) ~ ` > # + - = | { } . ! et, puisqu'elle est le caractère d'échappement lui-même, la barre oblique inverse.
Deux d'entre eux expliquent pourquoi presque tout le monde se fait piéger. Le point termine la plupart des phrases. Le trait d'union apparaît dans les dates, les plages, les options et les mots composés. Une note de version qui dit "Fixed: the 2.4-rc build" contient trois caractères réservés en neuf mots, et l'API rejette le message entier plutôt que de laisser passer le texte.
Les règles changent à l'intérieur d'une entité, et c'est la deuxième erreur classique. Dans un code en ligne ou un bloc de code, seuls la barre oblique inverse et l'accent grave sont spéciaux : échapper le reste y fait apparaître des barres obliques visibles dans votre code. Entre les parenthèses d'un lien ou d'un emoji personnalisé, seules la parenthèse fermante et la barre oblique inverse le sont. L'outil ci-dessus applique la bonne règle selon le contexte, ce qu'un rechercher-remplacer ne sait pas faire.
Si rien de tout cela ne vous tente, prenez HTML. Il échappe trois caractères, &, < et >, et il s'imbrique sans ambiguïté. La seule raison de préférer MarkdownV2 est qu'il se lit mieux dans un dépôt de code.
La limite de 4096 caractères compte le texte, pas le balisage
Un message texte Telegram contient 4096 caractères. Le formatage est transporté sous forme d'entités à côté du texte plutôt qu'à l'intérieur, donc les balises, les astérisques et les barres obliques visibles dans la sortie ne comptent pas. Le compteur ci-dessus affiche la longueur visible, le chiffre que Telegram vérifie.
Deux limites voisines méritent d'être connues avant de construire un envoyeur. Une légende de média contient 1024 caractères, donc un message formaté qui passe très bien seul sera refusé dès que vous joignez une image. Un message trop long n'est pas tronqué : l'API renvoie une erreur et n'envoie rien.
Questions
Est-ce que cela vaut pour les posts de canal et les chats ordinaires, ou seulement pour les bots ?
La table de syntaxe s'applique à tout ce qui passe par la Bot API ou par une bibliothèque cliente. Si vous tapez vous-même dans Telegram, l'application a son propre menu de formatage et vous ne voyez jamais MarkdownV2. Cet outil sert au cas où l'envoi est fait par autre chose, qui a besoin d'un texte déjà formaté.
Quel parse mode choisir ?
HTML, sauf raison contraire. Il échappe trois caractères au lieu de dix-huit, il s'imbrique de façon prévisible, et quand vous vous trompez vous voyez en général une balise plutôt qu'un message refusé. MarkdownV2 se lit mieux dans un fichier source, et c'est l'argument honnête en sa faveur.
Pourquoi mon message est-il parti sans son formatage ?
Presque toujours un parse_mode manquant. Sans lui, Telegram traite le texte comme littéral et les astérisques et les balises s'affichent comme des caractères. Réglez parse_mode sur MarkdownV2 ou HTML à l'envoi, selon la sortie que vous avez copiée.
Puis-je mettre du gras dans un lien, ou de l'italique dans du gras ?
Oui, dans les deux parse modes, avec une exception : souligné et italique ensemble en MarkdownV2 demandent un contournement parce que les délimiteurs se heurtent. Le code en ligne et les blocs de code n'acceptent aucun autre style à l'intérieur, dans les deux modes.
Qu'est-ce que l'ID d'emoji personnalisé et où le trouver ?
C'est l'identifiant numérique d'un emoji personnalisé Premium, et vous le lisez sur un message qui contient déjà l'emoji plutôt que dans un catalogue public. L'expéditeur a besoin de Telegram Premium, ou d'être un bot propriétaire du pack de stickers. Tous les autres voient le caractère de repli que vous avez entouré.
Ce que je tape ici est-il envoyé quelque part ?
Non. La conversion tourne dans votre navigateur et la page n'a ni étape d'envoi, ni compte, ni stockage. Fermez l'onglet et le message a disparu.
Pour aller plus loin
Également gratuits : Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .
Si ce formatage est pour un message que vous allez envoyer à 200 personnes
Le texte pré-échappé est la petite moitié d'une diffusion. La grande moitié consiste à l'envoyer depuis un compte auquel les gens répondent vraiment, à espacer les envois pour que Telegram reste tranquille, et à récupérer les réponses ailleurs que sur un téléphone. Entergram s'occupe de cette partie : de vrais comptes Telegram personnels plutôt qu'un bot, chacun derrière son propre proxy, et les réponses qui arrivent dans une seule interface, en face de la fiche du contact.
Voir comment marchent les diffusions