Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168

Не работает код для передачи видео. Куда копать?

08.10.2020, 17:42. Показов 2731. Ответов 23

Студворк — интернет-сервис помощи студентам
Добрый день!

Вот скажите, пожалуйста, правильно код создал, для передачи видео, как сообщения?

PHP
1
$bot->sendVideo($message->getChat()->getId(), $url = "/video/1mir.mp4");
не работает. Что не верно, подскажите, пожалуйста?
Ошибок синтаксических не пишет. Картинку через sendPhoto передает так:

PHP
1
2
$pic = "AgACAgIAAxkBAAICb199ye19M9O6eiEoftEtwXIHwXCUAAIEszEbitzxS4_hUZs9pFpCYq1sli4AAwEAAwIAA20AA3pQAgABGwQ";
$bot->sendPhoto($message->getChat()->getId(), $pic);
Картинка приходит, а видео нет. Видео воспроизводится, все "ок" с ним!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2020, 17:42
Ответы с готовыми решениями:

Дали задание, понятия не имею куда копать. Куда копать и в каком направлении?
Собственно и условие задачи: Есть почти ссылка: http://tinyurl.com/DA 9D C5 DE DD Нужно декодировать ссылку. Нужно цифры поксорить...

Куда копать?
На некоторых сайта вижу блоковое построение контента, как это сверстать на html css js думаю знаю, но с joomla где контент динамически...

Куда копать?)
Добрый вечер. Подскажите пожалуйста, с помощью какие элементов можно реализовать данную программу? Мне необходимо сделать автостоянку....

23
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
08.10.2020, 20:09
jenya82, А вы по такому $url, например из браузера, достучитесь до этого видео? Картинка-то уже вся в самом коде.
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 05:32  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
А вы по такому $url, например из браузера, достучитесь до этого видео? Картинка-то уже вся в самом коде.
да я разные коды видел. сам же не придумал. и кодированное видео . то есть загруженное на сервера телеграмм подставлял.

Подскажите как правильно прописать?

Вот читаю доки BOT api и там даже примеров нет как прописать url
другие на githab отправляют чуть что. а там сам черт ногу сломит.

Вот есть где мануал обсуждение вариантов как передать видео в бота как передать фото и не на Питоне?
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 07:16
jenya82, Передайте боту полный url если он находиться на другом домене, а если он находится на этом же сервере, то лучше полный путь в системе. Типа "/var/www/example.com//video/1mir.mp4"
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 09:13  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
Передайте боту полный url если он находиться на другом домене, а если он находится на этом же сервере, то лучше полный путь в системе. Типа "/var/www/example.com//video/1mir.mp4"
Ну вот пробую такую конструкцию

PHP
1
$bot->sendVideo($message->getChat()->getId(), new CURLFile(realpath("/home/users/22/www/domains/мойсайт.ru/my_bot/revkom_bot/video/1_spasaem_mir.mp4")));
Не отправляет в бота при нажатии Start

Добавлено через 1 минуту
PHP
1
$bot->sendVideo($message->getChat()->getId(), $url = "/home/users/22/www/domains/мойсайт.ru/my_bot/revkom_bot/video/1_spasaem_mir.mp4");
так тоже.

Вот где то ошибка, а где не пойму
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 10:05
jenya82, Если есть кириллические буквы в пути, то попробуйте urlencode.

Добавлено через 57 секунд
123
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 10:18  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
Если есть кириллические буквы в пути, то попробуйте urlencode.
нет кирилличесих нет. специально все убрал. это ссылка пример.
Есть примеры кодов на php под ботов на телеграмм где показано как видео передать?
Я вот не нашел. кидает постоянно на документацию а там мне не понятно
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 10:28
jenya82, Я не гуглпрограммист. Попробуйте не путь, а именно url к файлу.
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 11:24  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
не гуглпрограммист. Попробуйте не путь, а именно url к файлу.
да всяко пробовал.

вот в документации
написано так
PHP
1
2
$document = new \CURLFile('document.txt');
$bot->sendDocument($chatId, $document);

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

Про видео сказано так

PHP
1
\CURLFile|string $video
тоже не срабатывает.

Об этом написано в файле BotApi.php который у меня создался

Добавлено через 15 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
     * Use this method to send video files,
     * Telegram clients support mp4 videos (other formats may be sent as Document).
     * On success, the sent Message is returned.
     *
     * @param int|string $chatId chat_id or @channel_name
     * @param \CURLFile|string $video
     * @param int|null $duration
     * @param string|null $caption
     * @param int|null $replyToMessageId
     * @param Types\ReplyKeyboardMarkup|Types\ReplyKeyboardHide|Types\ForceReply|
     *        Types\ReplyKeyboardRemove|null $replyMarkup
     * @param bool $disableNotification
     * @param bool $supportsStreaming Pass True, if the uploaded video is suitable for streaming
     * @param string|null $parseMode
     *
     * @return \TelegramBot\Api\Types\Message
     * @throws \TelegramBot\Api\InvalidArgumentException
     * @throws \TelegramBot\Api\Exception
     */
    public function sendVideo(
        $chatId,
        $video,
        $duration = null,
        $caption = null,
        $replyToMessageId = null,
        $replyMarkup = null,
        $disableNotification = false,
        $supportsStreaming = false,
        $parseMode = null
    ) {
        return Message::fromResponse($this->call('sendVideo', [
            'chat_id' => $chatId,
            'video' => $video,
            'duration' => $duration,
            'caption' => $caption,
            'reply_to_message_id' => $replyToMessageId,
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
            'disable_notification' => (bool)$disableNotification,
            'supports_streaming' => (bool)$supportsStreaming,
            'parse_mode' => $parseMode
        ]));
    }
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 11:25
jenya82, А размер файла не более 50мб?
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 11:44  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
А размер файла не более 50мб?
29 мб
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 11:54
jenya82, Вот здесь должно быть так
PHP
1
$bot->sendVideo($message->getChat()->getId(), "https://example.com/my_bot/revkom_bot/video/1_spasaem_mir.mp4");
Вообще вы без самых начальных азов, а такая задача сложная без них. Вы же не понимает, что делаете. Почему вы решили, что нет документации? На странице бота явно написано
PHP
1
2
3
$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');
$document = new \CURLFile('document.txt');
$bot->sendDocument($chatId, $document);
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 13:10  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
документации? На странице бота явно написано
это про документ. а про видео нет.

Да без начальных азов и уже запутался. Удалось только запустить картинка + текст + кнопка.
А вот видео не получается передать и юзернейм в текст подставить.
Вот это мне где почитать с примерами как для новичка? Код на Питоне не подходит. только PHP

Добавлено через 2 минуты
Цитата Сообщение от HotReboot Посмотреть сообщение
$bot->sendVideo($message->getChat()->getId(), "https://example.com/my_bot/revkom_bot/video/1_spasaem_mir.mp4");
не работает так. пробовал. не передает видео.

Может тут надо метод прописать?
PHP
1
$bot->command("start", function ($message) use ($bot)
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
09.10.2020, 13:35
jenya82,
то про документ. а про видео нет.
Ну и что? Они все одинаковые. sendDocument, sendSticker, sendVideo, sendVoice.

Добавлено через 5 минут
Кстати вставьте в начало вашего скрипта php
PHP
1
2
3
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
09.10.2020, 15:39  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
Кстати вставьте в начало вашего скрипта php
Вставил

Но картинка то так передается

PHP
1
$bot->sendPhoto($message->getChat()->getId(), $pic);
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
10.10.2020, 18:04  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
А размер файла не более 50мб?
Так все просто оказалось! Ради прикола попробовал передать видео 11 мб (до этого 29 мб)

$bot->sendVideo($message->getChat()->getId(), "https://сайт/my_bot/revkom_bot/video/2.mp4");

и передалось.

Но проблема, то остается нужно передать файл 150 мб...
Как это сделать?
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
11.10.2020, 09:37  [ТС]
Вот еще че нарыл по теме:

Какая то yield не срабатывает?
Значит удалось установить что вот через вот это MadelineProto можно залить на сервера ТГ как то частями видео более 50 мб
Выполнился этот код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
if (!file_exists('madeline.php')) {
    copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php');
}
include 'madeline.php';
 
$MadelineProto = new \danog\MadelineProto\API('session.madeline');
$MadelineProto->async(true);
$MadelineProto->loop(function () use ($MadelineProto) {
    yield $MadelineProto->start();
 
    $me = yield $MadelineProto->getSelf();
 
    $MadelineProto->logger($me);
 
    if (!$me['bot']) {
        yield $MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => "Hi!\nThanks for creating MadelineProto! <3"]);
        yield $MadelineProto->channels->joinChannel(['channel' => '@MadelineProto']);
 
        try {
            yield $MadelineProto->messages->importChatInvite(['hash' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg']);
        } catch (\danog\MadelineProto\RPCErrorException $e) {
            $MadelineProto->logger($e);
        }
 
        yield $MadelineProto->messages->sendMessage(['peer' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg', 'message' => 'Testing MadelineProto!']);
    }
    yield $MadelineProto->echo('OK, done!');
});
Затем перешел в раздел по загрузке файлов
и пытаюсь выполнить этот код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
$sentMessage = yield $MadelineProto->messages->sendMedia([
    'peer' => '@danogentili',
    'media' => [
        '_' => 'inputMediaUploadedDocument',
        'file' => 'video.mp4',
        'attributes' => [
            ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true]
        ]
    ],
    'message' => '[This is the caption](https://t.me/MadelineProto)',
    'parse_mode' => 'Markdown'
]);
Тут вопросы:
1 Правильно понимаю что это код PHP а не Питон?
2 Правильно понимаю, что этот код нужно в отдельный файл index.php и выполнять переходом на этот файл в браузере?
Но при выполнении кода мне пишет

"Выражение "yield" может использоваться только внутри функции"

И вот тут не догоняю, че делать!

3 Что нужно дописать в код?
4 Код нужно встроить в первый код, что выше дал?

5 Где нибудь просто написано как залить файл более 50 мб на сервер ТГ. Сжал свой файл со 180 мб до 35, но не принимает ТГ бот по прямой ссылке.

Добавлено через 2 часа 47 минут
Вот так сделал и ошибок нет. Подглядел, как всегда у других )
Такой код может запуститься?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
 
 function run($params) {
     
     $sentMessage = yield $MadelineProto->messages->sendMedia([
    'peer' => '@buntov_test_bot',
    'media' => [
        '_' => 'inputMediaUploadedDocument',
        'file' => $params['https://greenteams.ru/my_bot/revkom_bot/agent_file_id/video/tovar.mp4'],
        'attributes' => [
            ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true]
        ]
    ],
    'message' => '[This is the caption](https://t.me/MadelineProto)',
    'parse_mode' => 'Markdown'
]);
 
$data = $MadelineProto->messages->getHistory($settings);
 
        echo '<pre>';
        print_r($data);
        echo '</pre>';
 
 
 }
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
11.10.2020, 10:09
jenya82, Я не понимаю, что вы вообще делаете. Похоже, что вы просто перебираете листинги кодов на которые наткнулись не осмысливая их совсем. Ну сами хоть чуть проанализируйте. Вот строка
PHP
1
$data = $MadelineProto->messages->getHistory($settings);
Где предварительное объявление переменной $settings с нужными в ней параметрами для функции? Уже не говоря о $MadelineProto.
0
1 / 1 / 0
Регистрация: 11.01.2010
Сообщений: 168
11.10.2020, 10:16  [ТС]
Цитата Сообщение от HotReboot Посмотреть сообщение
Я не понимаю, что вы вообще делаете.
Вы имеете ввиду так надо написать? Если пишу то ошибки синтаксические лезут... Хз, где править

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
 
 function run($params) {
     $settings = array(
     $sentMessage = yield $MadelineProto->messages->sendMedia([
    'peer' => '@buntov_test_bot',
    'media' => [
        '_' => 'inputMediaUploadedDocument',
        'file' => $params['https://greenteams.ru/my_bot/revkom_bot/agent_file_id/video/tovar.mp4'],
        'attributes' => [
            ['_' => 'documentAttributeVideo', 'round_message' => false, 'supports_streaming' => true]
        ]
    ],
    'message' => '[This is the caption](https://t.me/MadelineProto)',
    'parse_mode' => 'Markdown'
]);
);
 
$data = $MadelineProto->messages->getHistory($settings);
 
        echo '<pre>';
        print_r($data);
        echo '</pre>';
 
 
 }
Добавлено через 3 минуты
Я пытаюсь по этой инструкции действовать

https://docs.madelineproto.xyz... nd-a-video

Как бы все написано, но вставляю код-

и ошибка The "yield" expression can only be used inside a function

Подглядел тут https://coderun.ru/blog/kak-pa... oshhi-php/ про

function run($params) но честно не понимаю нужна она тут или нет. В документации об это ни слова. Для кого документацию делают? Для профи что ли?
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
11.10.2020, 10:23
jenya82, Зря вы за это взялись не имея представления о самом элементарном. function (функция) вызывается из основной программы. И должно было бы быть что-то типа
PHP
1
2
3
4
function run($params) {
  ....
}
return = run($in_parameter);
А у вас единственная строчка
PHP
1
$data = $MadelineProto->messages->getHistory($settings);
Которая никак функцию не вызывает совсем. И не переставляйте туда сюда код. Абсолютно всё не так.

Добавлено через 3 минуты
Вообще вот там же пример.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2020, 10:23
Помогаю со студенческими работами здесь

Куда копать?
Собственно начну с начала. Все было хорошо,скачал установил игру,сначала играл вроде нормально,потом дай думаю выставлю настройки на...

Куда копать?)
Всем привет!Скажу сразу,что я тот еще новичок.Поэтому,прошу помочь и если можно,то простеньким языком) Предсказывая советы...

Обьясните куда копать?
Народ всем привет! У меня вопрос по выбору игровых движков 1)Я хочу создать игру типа Poit Blanck так вот посоветуйте какой бесплатный...

Подскажите куда копать
Здравствуйте, форумчане помогите решить задачу или подскажите решить. суть задачи вывести из массива часто встречаемый элемент. если...

Подскажите куда копать
Добрый день. С JS практически не работал, нужно набросать фронт, надеюсь что натолкнете на пример. Упрощу задачу: Нужно нарисовать кучу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru