Crates.io | telegram-escape |
lib.rs | telegram-escape |
version | 0.1.0 |
created_at | 2025-08-30 10:08:55.550097+00 |
updated_at | 2025-08-30 10:08:55.550097+00 |
description | Escape text for Telegram's MarkdownV2 format |
homepage | https://github.com/utterstep/telegram-escape |
repository | |
max_upload_size | |
id | 1817492 |
size | 75,645 |
A Rust library for escaping text according to Telegram's MarkdownV2 formatting rules.
This library provides the tg_escape
function that properly escapes special characters in text for use with Telegram Bot API's MarkdownV2 parse mode. It intelligently handles different escaping rules for regular text versus code blocks/inline code.
_*[]()~
>#+-=|{}.!` characters`
and \
characterspulldown-cmark
for robust markdown parsinguse telegram_escape::tg_escape;
// Basic escaping
let text = "Soon you'll get a stats for today, and the overall status can be viewed by the /get_stat command :)";
let escaped = tg_escape(text);
// Result: "Soon you'll get a stats for today, and the overall status can be viewed by the /get\_stat command :\)"
// Code blocks have different escaping rules
let text_with_code = "Before `a_*~>#+-=|{}.!\` after";
let escaped = tg_escape(text_with_code);
// Inside backticks, only ` and \ are escaped
Add this to your Cargo.toml
:
[dependencies]
telegram-escape = "0.1.0"
Run tests with:
cargo test
Note: Some tests are currently marked as #[ignore]
due to failing edge cases:
test_escaped_characters
- handling of already-escaped characterstest_math_expressions
- mathematical operators escapingpulldown-cmark
- Markdown parsingpulldown-cmark-to-cmark
- Markdown serialization (using custom fork)regex
- Pattern matching for escape charactersSee LICENSE file for details.
Vlad Stepanov utterstep@hey.com