Безкоштовний інструмент
Форматування тексту в Telegram, екранування вже зроблене
У повідомленні є ціна, дефіс і крапка, а Bot API відповідає "can't parse entities". MarkdownV2 резервує 18 символів, і у звичайній фразі їх зазвичай чотири або п'ять. Напишіть повідомлення тут, виберіть жирний, спойлер або блок коду й скопіюйте вивід, де кожен такий символ уже екранований.
Напишіть повідомлення
Виділіть текст і застосуйте стиль або наберіть теги самі. Поле працює в HTML-синтаксисі Telegram, тож те, що ви редагуєте, уже придатне для одного з двох виводів. Попередній перегляд це картинка повідомлення, а не кнопка надсилання: звідси нічого не залишає ваш браузер.
Символів 198 із 4096
Понад 4096 символів. Telegram не прийме це як одне повідомлення, тож поділіть його або винесіть довгу частину у файл.
Telegram рахує видимі символи, тож сама розмітка нічого не коштує. Сутності й теги форматування в ліміт не входять.
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||\.
Надсилайте з parse_mode=MarkdownV2. У звичайному тексті екранований кожен зарезервований символ; усередині коду лише зворотна скісна риска й зворотний апостроф.
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>.
Надсилайте з parse_mode=HTML. Екранувати треба менше, і саме тому більшість бібліотек беруть його за замовчуванням.
Синтаксис в обох parse mode
Telegram приймає три parse mode. Markdown застарілий і підтримує чотири стилі; MarkdownV2 і HTML підтримують усі десять. Ця таблиця ставить MarkdownV2 і HTML поруч.
| Стиль | MarkdownV2 | HTML |
|---|---|---|
| Жирний | *bold* | <b>bold</b> |
| Курсив | _italic_ | <i>italic</i> |
| Підкреслений | __underline__ | <u>underline</u> |
| Закреслений | ~strike~ | <s>strike</s> |
| Спойлер | ||hidden|| | <tg-spoiler>hidden</tg-spoiler> |
| Код у рядку | `code` | <code>code</code> |
| Блок коду | ```python code ``` | <pre><code class="language-python">code</code></pre> |
| Блокова цитата | >quoted line | <blockquote>quoted</blockquote> |
| Посилання в тексті | [text](https://example.com) | <a href="https://example.com">text</a> |
| Власний емодзі |  | <tg-emoji emoji-id="5368324170671202286">👍</tg-emoji> |
Підкреслений і курсив не вкладаються один в одного просто так у MarkdownV2, бо __ і _ стикаються на межі. Коли потрібні обидва на одному відрізку тексту, беріть HTML.
Чому MarkdownV2 знову відхиляє ваше повідомлення
MarkdownV2 резервує вісімнадцять символів, і поза кодовою сутністю перед кожним із них має стояти зворотна скісна риска, навіть там, де прочитати його як розмітку неможливо. Перелік такий: _ * [ ] ( ) ~ ` > # + - = | { } . ! і сама зворотна скісна риска, бо вона і є символом екранування.
Два з них підводять майже всіх. Крапка завершує більшість речень. Дефіс трапляється в датах, діапазонах, прапорцях і складних словах. У нотатці про реліз "Fixed: the 2.4-rc build" три зарезервовані символи на дев'ять слів, і API відхиляє повідомлення цілком, а не пропускає текст.
Усередині сутності правила інші, і це друга поширена помилка. У коді в рядку та в блоці коду особливими лишаються тільки зворотна скісна риска й зворотний апостроф, тож екранування решти вставить у ваш код видимі риски. У дужках посилання або власного емодзі особливими є лише закривна дужка і зворотна скісна риска. Інструмент вище застосовує потрібне правило для кожного контексту, і саме цього не вміє пошук із заміною.
Якщо все це не до душі, беріть HTML. Він екранує три символи, &, < і >, і вкладається без двозначностей. Єдиний аргумент за MarkdownV2 у тому, що він краще читається в системі контролю версій.
Ліміт у 4096 символів рахує текст, а не розмітку
Текстове повідомлення Telegram вміщує 4096 символів. Форматування передається сутностями поряд із текстом, а не всередині нього, тож теги, зірочки й риски у виводі не рахуються. Лічильник вище показує видиму довжину, і саме це число перевіряє Telegram.
Поруч є два ліміти, які варто знати до того, як писати надсилач. Підпис до медіа вміщує 1024 символи, тож форматоване повідомлення, яке саме по собі проходить із запасом, буде відхилене, щойно ви додасте зображення. Повідомлення понад ліміт не обрізається: API повертає помилку й не надсилає нічого.
Запитання
Це працює для дописів у каналах і звичайних чатів чи лише для ботів?
Таблиця синтаксису стосується всього, що надсилається через Bot API або клієнтську бібліотеку. Якщо ви друкуєте в Telegram самі, у застосунку є власне меню форматування і MarkdownV2 ви взагалі не побачите. Цей інструмент для випадку, коли надсилає щось інше, а текст потрібен уже форматованим.
Який parse mode обрати?
HTML, якщо немає причин для іншого. Він екранує три символи замість вісімнадцяти, передбачувано вкладається, а при помилці зазвичай видно тег, а не втрачене повідомлення. MarkdownV2 краще читається у вихідному файлі, і це чесний аргумент на його користь.
Чому повідомлення надіслалося, але без форматування?
Майже завжди не вказано parse_mode. Без нього Telegram вважає текст буквальним, і зірочки з тегами виводяться як символи. Поставте parse_mode у MarkdownV2 або HTML під час надсилання, відповідно до виводу, який ви скопіювали.
Чи можна вкласти жирний у посилання або курсив у жирний?
Так, в обох parse mode, з одним винятком: підкреслений разом із курсивом у MarkdownV2 потребує обхідного прийому, бо роздільники стикаються. Код у рядку та блок коду не містять усередині жодних інших стилів у жодному з режимів.
Що таке ID власного емодзі і де його взяти?
Це числовий ID преміального власного емодзі, і його зчитують із повідомлення, де цей емодзі вже є, а не з публічного каталогу. Відправнику потрібен Telegram Premium або треба бути ботом, якому належить набір стікерів. Усі інші побачать запасний символ, який ви огорнули.
Чи завантажується кудись те, що я тут пишу?
Ні. Перетворення працює у вашому браузері, у сторінки немає кроку надсилання, облікового запису й сховища. Закрили вкладку, і повідомлення немає.
Далі
Теж безкоштовно: Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .
Якщо форматування потрібне для повідомлення, яке ви надішлете 200 людям
Екранований текст це менша половина розсилки. Більша половина в тому, щоб надіслати її з облікового запису, якому справді відповідають, витримати темп, за якого Telegram лишається спокійним, і зібрати відповіді десь, окрім телефона. Цю частину бере на себе Entergram: справжні особисті акаунти Telegram замість бота, кожен через власний проксі, а відповіді приходять в один інтерфейс поруч із карткою контакту.
Подивитися, як працюють розсилки