Задать вопрос
okovalev
@okovalev

Как отправить файл по file_id в Telegram Bot?

В документации указано, что можно отправлять файлы:
Sending by file_id
Sending by URL

Проблема в том, что для Телеграм отпрвку файлов по id считает предпочитетльным.


Описание отправки файлов: https://core.telegram.org/bots/api#sending-files
Описание метода: https://core.telegram.org/bots/api#senddocument
Ссылка на библеотеку: https://github.com/irazasyed/telegram-bot-sdk
Пример реализации, который пытаюсь использовать: https://github.com/alexborsch/telegram-bot-php

Как отправить файл по file_id?

Мне нужна функция аля documentCache($url);
Которая на входе будет принимать URL-картинки и если бот уже отпрвлял ее, то отправлять по file_id файл.

Пример:
if($text == "file") { //Работает
	
	
	$response = $telegram->sendDocument([
		'chat_id' => $chat_id,
		'document' => 'files/IMG_9549.MP4',
		'caption' => 'This is a smile :)',
	]);
	
	file_put_contents("varexport.txt", var_export($response, true), FILE_APPEND | LOCK_EX); 
	
	
}elseif($text == "cache") { //Не работает

	$response = $telegram->sendDocument([
		'chat_id' => $chat_id,
		'document' => 'sjdk3294lkj12', //Сюда пробовал указывать file_id и file_unique_id. Результата нет.
		'caption' => 'This is a smile :)',
	]);


$response
Telegram\Bot\Objects\Message::__set_state(array(
   'items' => 
  array (
    'message_id' => 84,
    'from' => 
    Telegram\Bot\Objects\User::__set_state(array(
       'items' => 
      array (
        'id' => 1260062574,
        'is_bot' => true,
        'first_name' => '@VseBudetBot', //Бот. Можно написать и протестить.
        'username' => 'VseBudetBot',
      ),
    )),
    'chat' => 
    Telegram\Bot\Objects\Chat::__set_state(array(
       'items' => 
      array (
        'id' => 140423979,
        'first_name' => '',
        'last_name' => '',
        'username' => 'ZhorikTelecom',//Мой контакт. Готов отблагодарить финансово за помощь.
//Как говориться и карма чиститься - для сообщества полезно будет думаю. И лавеха прилипает) И мозг разминаеться)
        'type' => 'private',
      ),
    )),
    'date' => 1591327857,
    'video' => 
    Telegram\Bot\Objects\Video::__set_state(array(
       'items' => 
      array (
        'duration' => 20,
        'width' => 528,
        'height' => 640,
        'mime_type' => 'video/mp4',
        'thumb' => 
        Telegram\Bot\Objects\PhotoSize::__set_state(array(
           'items' => 
          array (
            'file_id' => 'AAMCAgADGQMAA1Re2bxwjzVGDKWwSTbUtR71dZMKHAACLQYAAmRi0EqbS-yWKxIEB0ghr5QuAAMBAAdtAAOBLgACGgQ',
            'file_unique_id' => 'AQADSCGvlC4AA4EuAAI',
            'file_size' => 6280,
            'width' => 264,
            'height' => 320,
          ),
        )),
        'file_id' => 'BAACAgIAAxkDAANUXtm8cI81RgylsEk21LUe9XWTChwAAi0GAAJkYtBKm0vslisSBAcaBA',
        'file_unique_id' => 'AgADLQYAAmRi0Eo',
        'file_size' => 1920367,
      ),
    )),
    'caption' => 'This is a smile :)',
  ),
))
  • Вопрос задан
  • 4126 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@art055
elseif($text == "cache") { //Не работает

$response = $telegram->sendDocument([
'chat_id' => $chat_id,
'document' => 'sjdk3294lkj12', //Сюда пробовал указывать file_id и file_unique_id. Результата нет.
'caption' => 'This is a smile :)',
]);
Тут уже вам не нужно sendDocument, вы же не документ пытаетесь отправить, просто sendmesage
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы