Понедельник, 16 августа 2021 16:54

Отправка изображений с помощью Телеграм-бота

Россия
Оцените материал
(0 голосов)

Телеграм позволяет отправлять не только текстовые сообщения, но и изображения.

Сегодня мы рассмотрим отправку изображений с помощью Телеграм-бота.

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

 Существует несколько способов отправки изображений:

  • С помощью URL – вы просто указываете адрес картинки и Телеграм скачивает ее и вставляет в сообщение
  • Загрузка напрямую с помощью multipart/form-data
  • Так же вы можете указать file_id файла уже загруженного на сервера Telegram.

Сегодня мы рассмотрим первые два способа.

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

Чтобы отправить изображение с помощью его URL вы должны указать полный путь для файла.

Давайте создадим в папке с нашим ботом новый файл image.php

touch /var/phpbots/landing-bot/image.php

Со следующим содержимым:

<?php
include('vendor/autoload.php');

$token = "1234567890:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

use Telegram\Bot\Api;

$telegram = new Api($token);
$result = $telegram->getWebhookUpdates();

$chat_id = -517371153;

$url = 'https://blog.altuninvv.ru/apple-touch-icon.png'; 

$telegram->sendPhoto(['chat_id' => $chat_id, 'photo' => $url, 'parse_mode' => "html"]);

echo "Сообщение в группу отправлено!";

Откроем в браузере адрес:

http://192.168.1.42:9966/d2549d33-255a-40a6-8cce-36c8f7efe780/image.php

И в нашей группе увидим нашу картинку:

2021-08-15_20-21-32.png

Добавляем подпись для картинки.

Очень часто одной картинки недостаточно. Изображение выглядит намного лучше, если у него есть подпись. Для этого потребуются небольшие изменения в коде, в результате файл image.php примет вид: 

<?php
include('vendor/autoload.php');

$token = "1234567890:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

use Telegram\Bot\Api;

$telegram = new Api($token);
$result = $telegram->getWebhookUpdates();

$chat_id = -517371153;

$url = 'https://blog.altuninvv.ru/apple-touch-icon.png'; 
$caption = "Это подпись к нашей картинке!";

$telegram->sendPhoto(['chat_id' => $chat_id, 
                      'photo' => $url, 
                      'caption' => $caption, 
                      'parse_mode' => "html"]);

echo "Сообщение в группу отправлено!";

Запустим и получим вот такой результат:

2021-08-15_20-26-26.png 

Отправляем изображение с подписью наверху

Возможно, вам захочется добавить подпись на самый верх картинки, для этого вы можете воспользоваться следующим способом: 

<?php
include('vendor/autoload.php');

$token = "1234567890:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

use Telegram\Bot\Api;

$telegram = new Api($token);
$result = $telegram->getWebhookUpdates();

$chat_id = -517371153;

$url = 'https://blog.altuninvv.ru/apple-touch-icon.png'; 
$caption = "Это подпись к нашей картинке!";

$link = "[ ](".$url.')'.$caption;

$telegram->sendMessage(['chat_id' => $chat_id, 
                      'text' => $link, 
                      'parse_mode' => "markdown"]);

echo "Сообщение в группу отправлено!";

 Обратите внимание, между скобок [ ] должен быть пробел!

Запустим и получим вот такой результат:

2021-08-15_20-35-52.png 

Загрузка изображения с помощью multipart/form-data

Использование библиотеки Telegrambotsdk позволяет нам серьезно экономить время на разработку! Она умеет автоматически обрабатывать отправку локальных файлов на сервер с помощью multipart/form-data.

Скачаем в папку с ботом файл: 

cd /var/phpbots/landing-bot/ 

wget https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Telegram_2019_Logo.svg/80px-Telegram_2019_Logo.svg.png

Переименуем файл покороче:

mv 80px-Telegram_2019_Logo.svg.png logo.png

Внесем изменения в файл image.php:

<?php
include('vendor/autoload.php');

$token = "1234567890:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

use Telegram\Bot\Api;

$telegram = new Api($token);
$result = $telegram->getWebhookUpdates();

$chat_id = -517371153;

$url = '/var/phpbots/landing-bot/logo.png'; 
$caption = "Это логотип Телеграм!";

$telegram->sendPhoto(['chat_id' => $chat_id, 
                      'photo' => $url, 
                      'caption' => $caption, 
                      'parse_mode' => "html"]);

echo "Сообщение в группу отправлено!";

Запустим и получим результат:

2021-08-15_20-54-38.png 

Обратите внимание, всё что мы сделали это указали полный путь к локальному файлу, библиотека сама определила, что файл существует и загрузила его на сервер! 

Заключение

Сегодня мы рассмотрели отправку изображений с помощью Телеграм-бота на PHP.

Изображения были загружены с помощью URL и посредством прямой загрузки, с использованием multipart/form-data.

Мы узнали, как прикрепить описание перед изображением и после него.

В следующей статье мы рассмотрим создание меню навигации для бота.

Прочитано 1149 раз Последнее изменение Понедельник, 16 августа 2021 17:08