Почему Telegram не принимает html при добавлении в sendMessage parse_mode=HTML?

Ссылка скопирована
1 января 2026 1 ответ

Здравствуйте!

Хочу оформить ответ бота в Telegram с помощью HTML, но при добавлении в код отправки ответа parse_mode=HTML, вот так:

$urlQuery = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=". $chatId ."&text=" . $textMessage . "&drop_pending_updates=true&parse_mode=HTML"; $result = file_get_contents($urlQuery); и при оформлении этого ответа ($textMessage) так:  $textMessage = "<p><b> на ЛИК: </b>" . $phonesString . "</p>";  ответы перестают приходить от бота.. Без тегов html благополучно приходят, даже если в url sendMessage есть parse_mode=HTML.  Странно, что в ошибках из getWebhookInfo следующее:  pending_update_count	1 last_error_date	1701331880 last_error_message	"Read timeout expired" max_connections	40 ip_address	"37.140.192.84"

$urlQuery = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=". $chatId ."&text=" . $textMessage . "&drop_pending_updates=true&parse_mode=HTML"; $result = file_get_contents($urlQuery); и при оформлении этого ответа ($textMessage) так: $textMessage = "<p><b> на ЛИК: </b>" . $phonesString . "</p>"; ответы перестают приходить от бота.. Без тегов html благополучно приходят, даже если в url sendMessage есть parse_mode=HTML. Странно, что в ошибках из getWebhookInfo следующее: pending_update_count 1 last_error_date 1701331880 last_error_message "Read timeout expired" max_connections 40 ip_address "37.140.192.84"

Дополнительно:

как минимум https://www.php.net/http_build_query

  • как максимум, где тут https://core.telegram.org/bots/api#html-style указаны <p>
  • IvanU7n, спасибо вам огромное! А я-то хотел, в конечном счете, сделать в ответе бота несколько вариантов ответа с радиокнопками.. где можно пометить, какая информация пригодилась... Судя потому, что никаких тегов форм не поддерживается по присланной вами ссылке.. этого сделать вообще нельзя...
  • Valentine5, для такого используйте webApp
  • Ответы:

    1 я не помню чтобы в tg api был тег <p>
    2 уходите от file_get_contents, используйте curl. Причём советую использовать multipart data.

    При отправке запроса телега вам что отвечает? Там должно быть описание ошибки.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Виктор Sys Ответ

    Проблема, с которой вы столкнулись, связана с тем, что Telegram API не поддерживает HTML разметку в сообщениях, отправляемых с использованием метода sendMessage и параметра parse_mode=HTML. Вместо этого, Telegram поддерживает разметку с помощью Markdown.

    Markdown является более удобным и безопасным способом форматирования текста в сообщениях, чем HTML. Он позволяет добавлять различные стили текста, такие как жирный, курсив, ссылки и списки, с помощью простых символов и специальных тегов.

    Вот пример того, как можно использовать Markdown для форматирования текста в сообщении Telegram:

    sendMessage([
        'chat_id' =&gt; $chat_id,
        'text' =&gt; 'Привет, *мир*! Этот текст будет выделен жирным.',
        'parse_mode' =&gt; 'Markdown',
    ]);

    sendMessage([ 'chat_id' =&gt; $chat_id, 'text' =&gt; 'Привет, *мир*! Этот текст будет выделен жирным.', 'parse_mode' =&gt; 'Markdown', ]);

    Как видите, вместо тегов HTML используются символы "*" для выделения текста жирным. Это простой и удобный способ добавления форматирования в сообщения.

    Если вам все-таки необходимо отправить HTML разметку в сообщении Telegram, вы можете воспользоваться методом sendDocument, чтобы отправить документ с HTML содержимым. В этом случае, Telegram позволит открыть документ во встроенном браузере и отобразить HTML содержимое.

    Надеюсь, данное объяснение поможет вам понять, почему Telegram не принимает HTML при добавлении в sendMessage с параметром parse_mode=HTML, и как можно использовать Markdown для форматирования текста в сообщениях. Если у вас остались вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно