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

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

08.10.2020, 17:42. Показов 2654. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru