Chuyển đến nội dung chính

Công cụ miễn phí

Định dạng văn bản Telegram, phần escape đã làm sẵn

Tin nhắn của bạn có một mức giá, một dấu gạch nối và một dấu chấm, còn Bot API thì trả lời "can't parse entities". MarkdownV2 giữ riêng 18 ký tự, và một câu bình thường thường chứa bốn đến năm ký tự trong số đó. Hãy viết tin nhắn ở đây, chọn in đậm hoặc spoiler hoặc khối mã, rồi sao chép kết quả với mọi ký tự ấy đã được escape.

Viết tin nhắn của bạn

Chọn văn bản rồi áp một kiểu, hoặc tự gõ thẻ. Ô này làm việc bằng cú pháp HTML của Telegram, nên thứ bạn đang soạn đã hợp lệ cho một trong hai đầu ra. Bản xem trước là hình ảnh của tin nhắn, không phải nút gửi: không gì ở đây rời khỏi trình duyệt của bạn.

Ký tự 198 trên 4096

Telegram đếm ký tự nhìn thấy được, nên phần đánh dấu không mất gì. Entity và thẻ định dạng không tính vào giới hạn.

Xem trước
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.
Chạm vào spoiler để mở ra, giống hệt điều người đọc sẽ làm.

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

Gửi với parse_mode=MarkdownV2. Mọi ký tự dành riêng trong văn bản thường đều đã escape; bên trong đoạn mã thì chỉ có dấu gạch chéo ngược và dấu huyền ngược.

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

Gửi với parse_mode=HTML. Ít thứ phải escape hơn, và đó là lý do phần lớn thư viện lấy nó làm mặc định.

Cú pháp trong cả hai parse mode

Telegram chấp nhận ba parse mode. Markdown là bản cũ và hỗ trợ bốn kiểu; MarkdownV2 và HTML hỗ trợ cả mười. Bảng này đặt MarkdownV2 và HTML cạnh nhau.

KiểuMarkdownV2HTML
In đậm*bold*<b>bold</b>
In nghiêng_italic_<i>italic</i>
Gạch chân__underline__<u>underline</u>
Gạch ngang~strike~<s>strike</s>
Spoiler||hidden||<tg-spoiler>hidden</tg-spoiler>
Mã nội dòng`code`<code>code</code>
Khối mã```python code ```<pre><code class="language-python">code</code></pre>
Trích dẫn khối>quoted line<blockquote>quoted</blockquote>
Liên kết trong văn bản[text](https://example.com)<a href="https://example.com">text</a>
Emoji tùy chỉnh![👍](tg://emoji?id=5368324170671202286)<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>

Trong MarkdownV2, gạch chân và in nghiêng không lồng vào nhau một cách đơn giản được, vì __ và _ va nhau ở ranh giới. Khi cần cả hai trên cùng một đoạn chữ, hãy dùng HTML.

Vì sao MarkdownV2 cứ từ chối tin nhắn của bạn

MarkdownV2 giữ riêng mười tám ký tự, và bên ngoài một entity mã thì trước từng ký tự ấy đều phải có một dấu gạch chéo ngược, kể cả ở chỗ không thể nào bị đọc thành đánh dấu. Danh sách là _ * [ ] ( ) ~ ` > # + - = | { } . ! và, vì chính nó là ký tự escape, dấu gạch chéo ngược.

Hai trong số đó làm gần như ai cũng vấp. Dấu chấm kết thúc phần lớn câu. Dấu gạch nối nằm trong ngày tháng, khoảng giá trị, cờ dòng lệnh và từ ghép. Một ghi chú phát hành viết "Fixed: the 2.4-rc build" có ba ký tự dành riêng trong chín từ, và API từ chối cả tin nhắn thay vì cho văn bản đi qua.

Quy tắc đổi khác bên trong một entity, và đó là chỗ sai thứ hai. Trong một đoạn mã hay khối mã, chỉ dấu gạch chéo ngược và dấu huyền ngược là đặc biệt, nên escape phần còn lại ở đó sẽ để lại những dấu gạch chéo nhìn thấy được trong mã của bạn. Trong cặp ngoặc đơn của một liên kết hoặc emoji tùy chỉnh, chỉ ngoặc đóng và dấu gạch chéo ngược là đặc biệt. Công cụ bên trên áp đúng quy tắc cho từng ngữ cảnh, và đó chính là phần mà tìm kiếm và thay thế không làm nổi.

Nếu chẳng thứ nào trong đó hấp dẫn, hãy dùng HTML. Nó escape ba ký tự, &, < và >, và lồng nhau không mập mờ. Lý do duy nhất để chọn MarkdownV2 là nó dễ đọc hơn trong hệ quản lý phiên bản.

Giới hạn 4096 ký tự đếm văn bản, không đếm đánh dấu

Một tin nhắn văn bản Telegram chứa 4096 ký tự. Định dạng đi kèm dưới dạng entity bên cạnh văn bản chứ không nằm trong đó, nên các thẻ, dấu sao và dấu gạch chéo ngược bạn thấy ở đầu ra không được tính. Bộ đếm bên trên hiển thị độ dài nhìn thấy được, và đó là con số Telegram kiểm tra.

Có hai giới hạn liền kề đáng biết trước khi bạn dựng một trình gửi. Chú thích của tệp phương tiện chứa 1024 ký tự, nên một tin nhắn có định dạng vốn thừa chỗ khi đứng một mình sẽ bị từ chối ngay khi bạn đính kèm ảnh. Tin nhắn vượt giới hạn không bị cắt bớt: API trả về lỗi và không gửi gì cả.

Câu hỏi

Điều này áp dụng cho bài đăng kênh và trò chuyện thường, hay chỉ cho bot?

Bảng cú pháp áp dụng cho mọi thứ gửi qua Bot API hoặc một thư viện client. Nếu bạn tự gõ trong Telegram, ứng dụng có trình đơn định dạng riêng và bạn không bao giờ thấy MarkdownV2. Công cụ này dành cho trường hợp thứ khác lo việc gửi và cần văn bản đã định dạng sẵn.

Nên dùng parse mode nào?

HTML, trừ khi bạn có lý do khác. Nó escape ba ký tự thay vì mười tám, lồng nhau theo cách đoán trước được, và khi bạn làm sai thì thường chỉ lòi ra một cái thẻ chứ không mất cả tin nhắn. MarkdownV2 dễ đọc hơn trong tệp nguồn, và đó là lập luận thành thật cho nó.

Vì sao tin nhắn gửi được nhưng mất định dạng?

Gần như luôn là thiếu parse_mode. Không có nó, Telegram coi văn bản là nguyên văn, nên dấu sao và các thẻ hiện ra thành ký tự. Hãy đặt parse_mode thành MarkdownV2 hoặc HTML khi gọi gửi, khớp với đầu ra bạn đã sao chép.

Tôi có thể lồng in đậm trong liên kết, hay in nghiêng trong in đậm không?

Được, ở cả hai parse mode, với một ngoại lệ: gạch chân và in nghiêng đi cùng nhau trong MarkdownV2 cần một cách lách, vì các ký tự phân cách va nhau. Đoạn mã và khối mã thì không chứa được bất kỳ kiểu nào khác bên trong, ở cả hai chế độ.

ID emoji tùy chỉnh là gì và lấy ở đâu?

Đó là ID dạng số của một emoji tùy chỉnh Premium, và bạn đọc nó từ một tin nhắn đã chứa emoji ấy chứ không phải từ danh mục công khai. Người gửi cần có Telegram Premium, hoặc phải là bot sở hữu bộ nhãn dán đó. Những người còn lại thấy ký tự dự phòng mà bạn đã bọc.

Những gì tôi gõ ở đây có được tải lên đâu không?

Không. Việc chuyển đổi chạy trong trình duyệt của bạn và trang này không có bước gửi, không có tài khoản và không lưu trữ. Đóng tab là tin nhắn biến mất.

Xem tiếp

Cũng miễn phí: Telegram Group Finder , Telegram Lead Finder , Free QR Code Generator .

Nếu định dạng này dành cho một tin nhắn bạn sắp gửi tới 200 người

Văn bản escape sẵn chỉ là nửa nhỏ của một đợt gửi hàng loạt. Nửa lớn là gửi nó từ một tài khoản mà người ta thật sự trả lời, canh nhịp để Telegram còn yên, và hứng các câu trả lời ở chỗ nào đó không phải một cái điện thoại. Phần đó là việc của Entergram: tài khoản Telegram cá nhân thật thay vì bot, mỗi tài khoản đi qua proxy riêng, và các câu trả lời đổ về một giao diện duy nhất ngay cạnh hồ sơ liên hệ.

Xem cách gửi hàng loạt hoạt động