Передать символ # через telegram API (python)

Рейтинг: 2Ответов: 1Опубликовано: 03.05.2023

Пытаюсь отправить через тг бота сообщение содержащее "#", но отправляется только текст до этого символа

mes = 'startText#endText'
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chatId}&text={mes}'
requests.get(url)

Отправляет только startText

Ответы

▲ 4

Всё дело в специфике кодирования параметров в URL, а именно: тебе нужно экранировать символ # следующим образом:

Преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в UTF-8 в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении с предшествующим знаком процента (%)

Короче говоря, вот так: mes = 'startText%23endText'

mes = 'startText%23endText'
url = f'https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chatId}&text={mes}'
requests.get(url)