Отправка файла в сообщение в Telegram

Отправка файла в сообщение в Telegram

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

Инструкция будет как в предыдущей записи – https://prog-time.ru/forma-obratnoj-svyazi-s-otpravkoj-pisma-v-soobshhenie-v-telegram/

Если у вас не получается настроить отправку письма, вы можете получить у меня готовую форму – https://prog-time.ru/telegram_integration/

В данной записи я пропущу этап создания бота и сразу начну со скрипта для отправки.

<form method="POST" action="sendTelegram.php" class="myForm" enctype="multipart/form-data">
    <input type="file" name="fileImg">
    <input type="submit" value="Отправить">
</form>

В этот раз мы будем использовать функцию для отправки запроса и функцию для сбора отправляемых данных слитую в одну!

Функция sendFileTelegram имеет 1 параметр – это данные файла из массива $_FILES. В неё мы записываем токен бота и id группы

/* ОТПРАВКА ФАЙЛА В ТЕЛЕГРАММ */
function sendFileTelegram($fileTempName) {
  /*токен который выдаётся при регистрации бота */
  $token = "163436023214:AAFA1kUayC4Y2D123sTlBjPhlxY-9kR5wmyzk";
  /*идентификатор группы*/
  $chat_id = "-5574344497";

  $urlSite = "https://api.telegram.org/bot{$token}/sendDocument";

  $document = new CURLFile(realpath($fileTempName));

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $urlSite);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, ["chat_id" => $chat_id, "document" => $document]);
  curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type:multipart/form-data"]);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  $out = curl_exec($ch);
  curl_close($ch);
}

sendFileTelegram($_FILES["fileImg"]["tmp_name"]);

Для получения информации для отправки нужно создать форму, в которой прописать поле input типа file. После этого, в обработчике получаем данные из поля. Если несколько файлов, то можно сделать несколько запросов через цикл

foreach($_FILES as $file) {
  sendFileTelegram($file['tmp_name']);
}

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime