Как отправлять html код и изображения в чат/группу Telegram


Сегодня я хочу рассказать как в этом самом сообщение передать фотографии и HTML теги.

По сути на план такой:

  1. Научится добавлять HTML тэги
  2. Научиться добавлять изображения

Если вы хотите понять как отправить любое сообщение с сайта в чат/группу Telegram, то можете прочитать гайд по ссылке.

1 задача – Научится добавлять HTML тэги

Если мы возьмём за основу то, что мы понимаем как отправлять простое сообщение, то для отправки html тэгов нам нужно будет лишь добавить в наш url ещё один параметр – parse_mode=html. Выглядеть это будет следующим образом:

https://api.telegram.org/botТОКЕН/sendMessage?chat_id=ID_ЧАТА&text=СООБЩЕНИЕ&parse_mode=html

По итогу мы сможем смело использовать некоторые HTML тэги, например:

  1. Для выделения жирным – <strong>, <b>
  2. Для наклонного шрифта – <i>, <em>
  3. Для подчёркивания – <u>, <ins>
  4. Ссылку – <a>
  5. Зачёркивание – <s>, <strike>, <del>
  6. и некоторые другие

Полный список сможете посмотреть по ссылке.
Не так много как хотелось бы, но, в целом, есть с чем работать)

Ещё один важный момент, который хотел отметить – перенос строки. Так как тэг <br> не поддерживается, то пришлось искать выход из этой ситуации. В итоге хорошо подходит выражение PHP_EOL.

$order_detail = '<b>Заказ №' . $order_id . '</b>' . PHP_EOL . PHP_EOL;
$order_detail .= '<b>Состав заказа:</b>' . PHP_EOL;
$order_detail .= $ordered_items . PHP_EOL;
$order_detail .= 'Время оплаты: ' . $order_date_created . PHP_EOL . PHP_EOL;
//...

В итоге в Telegram сообщение будет иметь следующий вид:

Вывод сообщений в Telegram с тэгами HTML

2 задача – Научиться добавлять изображения

В принципе, это тоже не сложно и описано в официальной документации. Более того, в документации можно найти много различных методов, которые позволяют отправлять видео, геолокацию, аудио и тд. Но нас сейчас интересует сам подход, а как заменить одно на другое вы разберётесь сами.

Суть в том, что нам нужно заменить url на другой. Вместо страницы sendMessage мы обращаемся на страницу sendPhoto, а также теперь меняются параметры и минимально нужный нам это ссылка на само изображение, которое передаётся в параметр photo.

//ссылка для отправки текста
https://api.telegram.org/botТОКЕН/sendMessage?chat_id=ID_ЧАТА&text=СООБЩЕНИЕ&parse_mode=html

//ссылка для отправки изображения
https://api.telegram.org/botТОКЕН/sendPhoto?chat_id=ID_ЧАТА&photo=URL_ИЗОБРАЖЕНИЯ

//Пример:
$botToken = '5177503253:AAGDZHnGChuhrxifE-4c7fRb62nlQ_QmyhE';
$chat_id = '-1001565978363';
$image_url = 'https%3A%2F%2Fstatic.onecms.io%2Fwp-content%2Fuploads%2Fsites%2F6%2F2019%2F05%2Fmsdghos_ec065-2000.jpg';
$url = 'https://api.telegram.org/bot' . $botToken . '/sendPhoto?chat_id=' . $chat_id . '&photo=' . $image_url;
$result = file_get_contents( $url );



Итогом будет отправка изображения в чат или группу в телеграмме:

Результат отправки изображения в телеграмм