В новой записи я расскажу как настроить отправку файлов в сообщении, в 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']);
}