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

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

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

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

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

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
Ответ Создать тему
Новые блоги и статьи
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
Реляционная модель и правила Кодда: фундамент современных баз данных
Codd 05.04.2025
Конец 1960-х — начало 1970-х годов был периодом глубоких трансформаций в области хранения и обработки данных. На фоне растущих потребностей бизнеса и правительственных структур существовавшие на тот. . .
Асинхронные операции в Django с Celery
py-thonny 05.04.2025
Разработчики Django часто сталкиваются с проблемой, когда пользователь нажимает кнопку отправки формы и. . . ждёт. Секунды растягиваются в минуты, терпение иссякает, а интерфейс приложения замирает. . . .
Использование кэшей CPU: Максимальная производительность в Go
golander 05.04.2025
Разработчикам хорошо известно, что эффективность кода зависит не только от алгоритмов и структур данных, но и от того, насколько удачно программа взаимодействует с железом. Среди множества факторов,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер