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.
This commit is contained in:
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user