Telegram бот на PHP: отправка файлов и изображений в Telegram
SeoLik

27 августа 2024, 13:27
497

О том, как создать Telegram бота и автоматически постить статью на своем канале, можно подробно почитать тут. В данной статье расскажем, как отправлять картинки и файлы в Telegram бота.

За отправку картинок и файлов отвечают два метода Telegram API: sendPhoto() и sendDocument().

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

Отправка изображения по URL

$bot_token = '99999999999:AFDSDSDSDS_nbdfdgDSFDSFGFbcvbfghdfhU'; // токен бота

$url_post = 'https://seolik.ru'; // URL вашей страницы
$title = 'Анкор ссылки'; // Текст анкора ссылки
$des = 'Любой текст до 1024 символов, который можно <a href="https://antiplagiat.seolik.ru/" target="_blank">проверить на уникальность</a>';

$img = 'https://seolik.ru/img/cats.jpg'; // URL картинки

$text_tg = '<a href="'.$url_post.'" target="_blank">'.$title.'</a>

'; // отступ нужен

$text_tg_des = mb_strimwidth($des, 0, 1000, "..."); // обрезаем текст

$text_tg .= $text_tg_des;


 // параметры, которые отправятся в api телеграмм
$params = array(
'chat_id' => '-1001442431172', // id получателя сообщения
'photo' => $img, 
'caption' => $text_tg, // текст надписи
'protect_content' => false, // значение true или false
'parse_mode' => 'HTML', // режим отображения сообщения
);
 // параметры, которые отправятся в api телеграмм

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendPhoto'); // адрес api телеграмм
curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
curl_setopt($curl, CURLOPT_TIMEOUT, 20); // максимальное время выполнения запроса
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,20);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($curl); // запрос к api
curl_close($curl);  

Отправка локальных изображений

$bot_token = '99999999999:AFDSDSDSDS_nbdfdgDSFDSFGFbcvbfghdfhU'; // токен бота

$url_post = 'https://seolik.ru'; // URL вашей страницы
$title = 'Анкор ссылки'; // Текст анкора ссылки
$des = 'Любой текст до 1024 символов, который можно <a href="https://antiplagiat.seolik.ru/" target="_blank">проверить на уникальность</a>';

$img = __DIR__ .'/img/cats.jpg'; // картинка

$text_tg = '<a href="'.$url_post.'" target="_blank">'.$title.'</a>

'; // отступ нужен

$text_tg_des = mb_strimwidth($des, 0, 1000, "..."); // обрезаем текст

$text_tg .= $text_tg_des;


 // параметры, которые отправятся в api телеграмм
$params = array(
'chat_id' => '-1001442431172', // id получателя сообщения
'photo' => new CURLFile($img), // путь к картинке
'caption' => 'Локальная картинка на сайте', // текст надписи
'protect_content' => false, // значение true или false
'parse_mode' => 'HTML', // режим отображения сообщения
);
 // параметры, которые отправятся в api телеграмм

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendPhoto'); // адрес api телеграмм
curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
curl_setopt($curl, CURLOPT_TIMEOUT, 20); // максимальное время выполнения запроса
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,20);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($curl); // запрос к api
curl_close($curl);  

Отправка файлов

Отправка файлов выполняется точно также, только параметр document, а метод sendDocument.

$bot_token = '99999999999:AFDSDSDSDS_nbdfdgDSFDSFGFbcvbfghdfhU'; // токен бота

$url_post = 'https://seolik.ru'; // URL вашей страницы
$title = 'Анкор ссылки'; // Текст анкора ссылки
$des = 'Любой текст до 1024 символов, который можно <a href="https://antiplagiat.seolik.ru/" target="_blank">проверить на уникальность</a>';

$file = __DIR__ .'/img/cats.jpg'; // URL файла

$text_tg = '<a href="'.$url_post.'" target="_blank">'.$title.'</a>

'; // отступ нужен

$text_tg_des = mb_strimwidth($des, 0, 1000, "..."); // обрезаем текст

$text_tg .= $text_tg_des;


 // параметры, которые отправятся в api телеграмм
$params = array(
'chat_id' => '-1001442431172', // id получателя сообщения
'document' => new CURLFile($file), // путь к файлу
'caption' => 'Файл картинка', // текст надписи
'parse_mode' => 'HTML', // режим отображения сообщения
);
 // параметры, которые отправятся в api телеграмм

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendDocument'); // адрес api телеграмм
curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
curl_setopt($curl, CURLOPT_TIMEOUT, 20); // максимальное время выполнения запроса
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,20);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($curl); // запрос к api
curl_close($curl);