Как скачивать файлы Telegram через php более 20МБ?
Привет, я создал возможность качать файлы из Telegram через бот(в которого пользователи отправляют файлы) на веб-сервер, но столкнулся с ограничением Telegram API в 20МБ. Кто-нибудь уже делал проекты в которых можно обходить ограничение? Например, какие-нибудь SDK и как ими пользоваться.
Пожалуйста, не рассказывайте о способах в которых взаимодействуют другие языки программирования, меня интересует именно способ через php, потому что сервер другие не поддерживает.
Дополнительно:
Какой вы хотите SDK или что-то другое, если в самом АПИ не заложен размер выше 20 мб?
Ответы:
Поднимать собственное хранилище и хранить в нем файлы какого угодно размера. Телеграм, очевидно, не заинтересован, чтобы любой желающий использовал его как файлопомойку через их же 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
___
У меня платный тариф на Диске, ссылки вечные (максимально долгие), удалять не буду.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для скачивания файлов 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 на размер загружаемых файлов и скорость скачивания.