From 65ad3c899961b497be5929a2c1e84b096d41d2d8 Mon Sep 17 00:00:00 2001 From: SamNet-dev Date: Tue, 17 Feb 2026 13:38:43 -0600 Subject: [PATCH] Fix Telegram messages: expand literal \n to real newlines before sending In bash, \n in double-quoted strings is literal backslash+n, not a newline character. curl --data-urlencode sends them as %5Cn and Telegram renders them literally in message text, causing \n\n to appear visibly around proxy links. Fix: run msg through printf '%b' in telegram_send_message() and tg_send() to convert \n to actual newlines (0x0A) before the string is URL-encoded and sent to the Telegram API. Validated: _esc() markdown escapes (\_, \*) are unaffected since underscore and asterisk are not printf escape sequences. --- mtproxymax.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mtproxymax.sh b/mtproxymax.sh index ba714ba..5d82136 100644 --- a/mtproxymax.sh +++ b/mtproxymax.sh @@ -2618,7 +2618,8 @@ self_update() { # ── Section 14: Telegram Integration ──────────────────────── telegram_send_message() { - local msg="$1" + local msg + msg=$(printf '%b' "$1") # expand literal \n to real newlines local token="${TELEGRAM_BOT_TOKEN}" local chat_id="${TELEGRAM_CHAT_ID}" @@ -2927,7 +2928,8 @@ get_cached_ip() { # Minimal Telegram send tg_send() { - local msg="$1" + local msg + msg=$(printf '%b' "$1") # expand literal \n to real newlines local label="${TELEGRAM_SERVER_LABEL:-MTProxyMax}" local _ip; _ip=$(get_cached_ip) [ -n "$_ip" ] && msg="[$(_esc "$label") | ${_ip}] ${msg}" || msg="[$(_esc "$label")] ${msg}"