Как скачивать файлы Telegram через php более 20МБ?

Ссылка скопирована
1 ответ

Привет, я создал возможность качать файлы из Telegram через бот(в которого пользователи отправляют файлы) на веб-сервер, но столкнулся с ограничением Telegram API в 20МБ. Кто-нибудь уже делал проекты в которых можно обходить ограничение? Например, какие-нибудь SDK и как ими пользоваться.

Пожалуйста, не рассказывайте о способах в которых взаимодействуют другие языки программирования, меня интересует именно способ через php, потому что сервер другие не поддерживает.

Дополнительно:

Какой вы хотите SDK или что-то другое, если в самом АПИ не заложен размер выше 20 мб?

  • Ну я знаю что можно использовать App ID и Hash который телеграм выдает на сайте в личном профиле(он позволяет обходить ограничения), но нигде не нашел как можно его использовать.
  • Ответы:

    Поднимать собственное хранилище и хранить в нем файлы какого угодно размера. Телеграм, очевидно, не заинтересован, чтобы любой желающий использовал его как файлопомойку через их же API.

    P.S. прочитайте правила и удалите все теги, кроме Telegram, они не имеют отношения к вопросу.

    Решение есть. Это локальный сервер. Только его из сишных исходников нужно самому собирать.
    Я у себя наговнокодил вот так:

    // vendor/irazasyed/telegram-bot-sdk/src/TelegramClient.php const BASE_BOT_URL = 'http://127.0.0.1:8081/bot';

    // vendor/irazasyed/telegram-bot-sdk/src/TelegramClient.php const BASE_BOT_URL = 'http://127.0.0.1:8081/bot';

    Будет приходить локальный путь типа /path_to/yourfolder/qwe/filename.ext
    И уже с ним работай.
    Запускал сервер так (через (supervisor):

    [supervisord] environment=TELEGRAM_API_ID="2*****89",TELEGRAM_API_HASH="dc8******c34"  [program:tgapi] command=/usr/local/bin/telegram-bot-api -u root -g www-data --local  --max-webhook-connections=3 --http-stat-ip-address=127.0.0.1 --http-stat-port=8082 directory=/var/tgapi user=root autostart=true autorestart=true stopasgroup=true killasgroup=true numprocs=1

    [supervisord] environment=TELEGRAM_API_ID="2*****89",TELEGRAM_API_HASH="dc8******c34" [program:tgapi] command=/usr/local/bin/telegram-bot-api -u root -g www-data --local --max-webhook-connections=3 --http-stat-ip-address=127.0.0.1 --http-stat-port=8082 directory=/var/tgapi user=root autostart=true autorestart=true stopasgroup=true killasgroup=true numprocs=1

    Разумеется, вы можете выбрать другой способ: через systemd, init.d, screen или что-нибудь ещё...
    А ниже я скину ссылки на уже собранные файлы. Там и для линуксов, и для Windows, очень много, пробуйте по очереди, один из них возможно заработает. А нет, тогда на целевой системе по инструкции с Github собирайте сами.
    Это работало на Debian 9 X64
    https://disk.yandex.ru/d/8CI5XChsOuGx6w

    Этот через WSL Ubuntu X64 собирал:
    https://disk.yandex.ru/d/ViYfg5rhIljoNw

    А вот остальные, там архивы (насобирал из интернета):
    https://disk.yandex.ru/d/MJWQtlJv3qFamg

    ___
    У меня платный тариф на Диске, ссылки вечные (максимально долгие), удалять не буду.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Сергей Миронов Ответ

    Для скачивания файлов Telegram через PHP размером более 20 МБ можно воспользоваться следующими шагами:

    1. Установить библиотеку GuzzleHttp для работы с HTTP-запросами. Для этого необходимо добавить зависимость в файл composer.json:

    ```json
    "require": {
    "guzzlehttp/guzzle": "^7.0"
    }
    ```

    После этого выполнить команду `composer install` для установки библиотеки.

    2. Создать скрипт PHP для скачивания файла. Пример кода:

    ```php
    get($url);
    $data = json_decode($response->getBody(), true);

    $fileUrl = 'https://api.telegram.org/file/bot[TOKEN]/' . $data['result']['file_path'];
    $fileName = basename($fileUrl);

    file_put_contents($fileName, file_get_contents($fileUrl));

    echo 'Файл ' . $fileName . ' успешно скачан.';
    ```

    3. Заменить `[TOKEN]` на токен вашего бота и `[FILE_ID]` на идентификатор файла, который вы хотите скачать.

    4. Запустить скрипт и дождаться завершения скачивания файла.

    Этот метод позволяет скачивать файлы Telegram размером более 20 МБ через PHP. Важно помнить, что для работы скрипта необходимо наличие токена бота и идентификатора файла. Также стоит учитывать ограничения Telegram на размер загружаемых файлов и скорость скачивания.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно