@thisuserhatephp
Офлайн - losers Онлайн - lusers

Как получить публичную ссылку на изображение с чата Телеграм?

Я пытаюсь получить изображение из Телеграм канала, в котором находится бот и который может видеть сообщение. Код ниже работает и изображение выводятся, но проблема в том, что такие изображение публично выводить на своем сайте например не получится, так как ссылка на изображение состоит из токена бота, например
https://api.telegram.org/file/bot88**************/photos/file_15.jpg


насколько я понимаю, публично выкладывать токен бота не безопасно.

Каким образом я могу выводить изображение с публичной ссылкой.

Единственный вариант, который приходит мне на ум, это сохранять фотографии на своем сервере, а уже оттуда выводить, но этот вариант на крайний случай.

spoiler
$token = '88**************';	

$apiUrl = "https://api.telegram.org/bot$token/getUpdates";
$response = file_get_contents($apiUrl);
$data = json_decode($response, true);


if($data['ok'] && !empty($data['result'])) {
    $resultArray = $data['result'];
        foreach($resultArray as $row ) {
                //текстовое сообщение
            if(!empty($row['message']['text'])) {
                echo $row['message']['text'].'<br>';
            }

            // поучаем фото
            if(!empty($row['message']['photo'])) {
                $rowPhoto = $row['message']['photo'];

                $file_id = $rowPhoto[2]['file_id'] ?? $rowPhoto[0]['file_id'];

                $photoUri = "https://api.telegram.org/bot$token/getFile?file_id=$file_id";
                $phoroRes = file_get_contents($photoUri);
                $photoData = json_decode($phoroRes, true);


                $file_path = $photoData['result']['file_path'];

                $imageUrl = "https://api.telegram.org/file/bot$token/$file_path";

                echo "<img src=\"$imageUrl\" alt=\"Telegram Image\">";
                echo "<br>". $row['message']['caption'];

            }
        }
}
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
thewind
@thewind
php программист, front / backend developer
Напишите простеший скрипт, который будет слушать урлы типа /file/{file_id} и по этому файл айди запрашивать файл у телеграма и возвращать клиенту с корректный content-type. Так вы не будете светить токен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
04 мая 2024, в 22:32
2000 руб./за проект
04 мая 2024, в 22:10
2001 руб./за проект
04 мая 2024, в 21:12
10000 руб./за проект