Как загрузить файл на сервер телеграмма

Обновлено: 04.07.2024

Разработчик из Италии Pato05 создал облачный сервис Uploadgram, позволяющий пользователям загружать файлы на серверы мессенджера Telegram. Сервис полностью бесплатный, и на него можно загружать файлы любых объемов без ограничений по времени хранения.

«Облачный» Telegram

Мессенджер Павла Дурова Telegram превратился в полноценное и полностью бесплатное облачное хранилище, работающее почти без ограничений. Такую возможность реализовал пользователь GitHub с никнеймом Pato05 – он запустил сервис Uploadgram, позволяющий загружать файлы на серверы Telegram и хранить их там.

В профиле Pato05 не сказано, является ли он разработчиком Telegram, бывшим или нынешним. В его Twitter говорится, что он проживает в Италии и зарабатывает на жизнь веб-дизайном и программированием на PHP.

На момент публикации материала Uploadgram существовал в виде Android-приложения и Telegram-бота, плюс Pato05 запустил фирменный веб-сайт, позволяющий загружать файлы на серверы мессенджера через браузер с настольного ПК, ноутбука или мобильного устройства.

upload606.jpg

Выпускать Uploadgram в виде отдельного приложения для Apple iOS разработчик сервиса пока не планирует. Он объясняет это тем, что, помимо прочего, не может потянуть расходы на публикацию приложения в App Store. Pato05 опубликовал в своем GitHub-репозитории весь исходный код проекта и не возражает против того, чтобы кто-нибудь другой написал ПО для iPhone и iPad вместо него.

В магазине Google Play приложения Uploadgram для Android на момент публикации материала тоже не было. Пока неизвестно, планирует ли Pato05 загружать его туда, но скачать готовый к установке дистрибутив он позволяет из своего GitHub-репозитория. На 20 апреля 2021 г. утилита была доступна в версии 1.0.0. beta.6 и «весила» 12 МБ. Для ее установки на смартфон или планшет на базе Android не нужны дополнительные манипуляции с гаджетом – достаточно будет скопировать дистрибутив в его память и запустить.

Как работает «облако»

Редакция CNews протестировала работоспособность всех существующих версий Uploadgram. Интерфейс проекта выполнен полностью на английском языке, но сводится к всего лишь одной основной кнопке – Upload («загрузить»). По ее нажатию появляется окно файлового менеджера, в котором можно выбрать необходимые для загрузки файлы.

upload601.jpg

При этом сервис не накладывает никаких ограничений ни на «вес» загружаемого файла, ни на время его хранения – Uploadgram позволил закачать на сервер Telegram документы объемом от нескольких килобайтов до нескольких сотен мегабайтов.

upload602.jpg

Для работы с Uploadgram наличие профиля в Telegram не требуется – к примеру, если загружать файлы с ПК, то можно закрыть программу мессенджера, а сам Uploadgram никакой авторизации, как и регистрации, пока не потребует.

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

upload603.jpg

Название любого из закачанных файлов можно редактировать. Также пользователю доступна возможность их удаления с серверов Telegram, например, если надобность в нем пропала, или если он был загружен по ошибке. Функции переименования или удаления будут доступны пользователю ровно до момента очищения им cookie-файлов в своем браузере.

Мобильное ПО и бот Uploadgram

Android-приложение Uploadgram работает по схеме, аналогичной той, что используется в веб-версии сервиса. Сразу после установки оно запросит доступ только к файловой системе, чтобы иметь возможность «видеть» хранящиеся в памяти устройства файлы – доступ к контактам, SMS и другим персональным данным утилите не требуется.

upload604.jpg

Android-приложение Uploadgram внешне не отличается от веб-версии

Основной экран содержит всю ту же единственную кнопку Upload, и загруженные файлы будут появляться на нем же. Касание к любому из них выдаст меню с прямой ссылкой на файл, а также с кнопками переименования и удаления. Авторизацию в Telegram приложение, как и веб-версия, не требует.

upload605.jpg

Telegram-бот Uploadgram пугает расширенным сводом правил

Что нельзя загружать

Что будет, если в СДХ убрать семь из восьми контроллеров?


В первую очередь Pato05 запрещает загружать при помощи его сервиса порнографию и/или материалы, в том или ином виде пропагандирующие насилие. Второе правило запрещает использовать Uploadgram для обмана пользователей тем или иным способом. Оба эти правила разработчик не конкретизировал, то есть пока неясно, что именно он имеет в виду под «обманом» или «пропагандой насилия».

В своей работе над ботом, который проводит розыгрыши, мне потребовалось сохранять у себя на сервере файлы, присылаемые пользователями. Очень интересный и простой процесс получился.

У Telegram Bot Api для этого есть специальный метод getFile. На входе он получает file_id , на выходе объект File.

Параметров file_id у картинки может быть больше одного, потому как телеграм присылает несколько вариантов размеров картинки, последний всегда оригинал. При загрузке картинки в бот приходит информация в виде объекта Photo, в котором лежит массив объектов PhotoSize.

Наш бот будет принимать только команду /start и картинку, на остальные запросы он будет "ругаться". Чтобы определить, что нам пришло в нашем уже знакомом по предыдущим статьям методе init() будем проверять ключи массива пришедших данных. Для реализации задуманного нам нужен только объект Message.


Картинки мы будем сохранять в директории img , располагается она рядом с файлом index.php в котором наш код.


В случае если прислали картинку, то мы передаем массив объектов PhotoSize в метод getPhoto() , он вернет результат в boolean. Внутри метода происходит 2 действия:

  1. через метод getPhotoPath() получаем расположение файла на сервере Telegram
  2. через метод copyPhoto() копируем картинку к себе на сервер

Картинка располагается на сервере Telegram по стандартному пути:


Выводит картинку по этому пути где-либо в сети не рекомендую, так как будет доступен ваш токен от бота.

Сохранять себе на сервер мы будем оригинал, поэтому нам надо узнать количество элементов в массиве, использовать будем функцию count().

Чтобы получить расширение файла, будем разбивать file_path в массив по знаку . функцией explode() и брать последний элемент используя функцию end(). Для копирования файлов пользуемся функцией copy().

Подводим итог

Комментарии

Внимание!
Убедитесь, что эта страница открыта в браузере, а не в приложении Telegram. В противном случае авторизация пройдет только в приложении Telegram.

Облачное хранилище в Телеграм — это удобная альтернатива Google Диску, iCloud и другим подобным интернет-платформам, где можно хранить свои файлы. Зачем нагружать память компьютера или использовать физические носители, которые нужно таскать с собой, если все можно хранить на онлайн-серверах, в частности, на удобном облаке Телеграм.

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

Сохраняйте на онлайн-сервера мессенджера фотографии, видеозаписи, архивы, заметки и любую другую информацию. Все что нужно будет для доступа к сохраненным материалам — это интернет.

Рекомендуем также заглянуть в наш огромный каталог Телеграм каналов .

Содержание:

  • Как технически устроено облако в ТелеграмГде находится облако Телеграм
  • Преимущества облачного хранилища Телеграм
  • Минусы облачного хранилища Телеграм
  • Лайфхак, как уменьшить размер медиафайлов
  • Как использовать облако Телеграм
  • Как зайти в облако ТелеграмКак зайти в облако Телеграм с компьютера
  • Как зайти в облако Телеграм со смартфона
  • Как пользоваться облаком совместно
  • Как очистить облако ТелеграмКак удалить/переслать/сохранить файлы в облаке общего чата со смартфона

Как технически устроено облако в Телеграм

« Облако », где вы можете хранить файлы без физического носителя, представляет собой краткое, так скажем «народное», определение разработки « cloud storage ». Она базируется на технологии хранения материалов пользователя на удаленном сервере.

Где находится облако Телеграм

Также в раздел « Избранное » вы сможете сохранять текстовые послания и отправленные вам материалы от других пользователей.

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

Преимущества облачного хранилища Телеграм

У облака Телеграм есть четыре главных плюса :

  1. За него не нужно платить.
  2. Объем памяти облачного хранилища неограничен.
  3. Получить доступ к нему можно с любого устройства (даже при одновременном использовании аккаунта с нескольких гаджетов, например, на компьютере и смартфоне).
  4. Поиск — вы можете ввести название файла в поисковую строку, чтобы быстрей его найти.

С плюсами разобрались, а что на счет минусов этого облачного хранилища?

Минусы облачного хранилища Телеграм

Можно выделить 2 недостатка , с которыми вы можете столкнуться при использовании облака в Телеграм:

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

Лайфхак, как уменьшить размер медиафайлов

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

Для уменьшения размеров видео используйте специальные видеоконверторы , помогающие добиться нужного результата, слегка снизив качество фильма/видеозаписи.

В предыдущей статье мы рассказали, как создать простого бота на Node.js, однако он работал только на локальном компьютере. Эта статья о том, как загрузить бота на сервер, запустить его и проверить, что всё работает.

Шаг 1. Выбрать хостинг

Как правило, на shared-хостинге отсутствует поддержка Node.js, поэтому нам понадобится как минимум виртуальный сервер. Существуют сервисы, предлагающие VPS бесплатно, но с заметными ограничениями: например на количество трафика или нагрузку на сервер. Можно выделить несколько известных зарубежных провайдеров (но стоит отметить, что для новичков они могут оказаться сложными):

  • Google Cloud
  • Oracle Cloud
  • Amazon Web Services

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

  1. Прогнозируемая нагрузка — зависит от сложности вашего бота и количества запросов к нему.
  2. Количество оперативной памяти — это зависит от многих факторов, как, например, уровень оптимизации кода и общий масштаб вашего проекта.

Так как наш бот использует только одну основную библиотеку и состоит из нескольких строк кода, мы выбираем самый младший тариф — Cloud-0. В будущем, если возникнет необходимость, можно перейти на более дорогой тариф.

Шаг 2. Заказать хостинг

Заказ VPS сервера

После заказа и оплаты дождёмся настройки сервера:

Настройка сервера

В течение минуты статус сервера сменится с «В процессе» на «Активен». После этого отобразятся реквизиты доступа к серверу, они также будут отправлены на почту:

Реквизиты доступа к серверу

Шаг 3. Загрузить бота

Приступим к загрузке бота на сервер. Это можно сделать разными способами — с помощью FTP, SFTP, панели управления или, к примеру, rsync. Мы выберем самый быстрый вариант — SFTP, так как для него нужна только возможность подключения к серверу по SSH, которая обычно присутствует на всех VPS сразу после заказа.

Мы подключимся к серверу с помощью FileZilla. Укажем IP-адрес сервера, а также логин root и пароль в настройках клиента:

Настройки клиента

При первом подключении появится окно с предупреждением:

Окно с предупреждением

Ставим галочку «Всегда доверять этому хосту» и нажимаем «Ок».

Переходим на директорию выше ( . ), затем в каталог /opt и создаём папку с произвольным названием (мы выбрали keksbot ):

Директория проекта

Переходим в созданную папку и загружаем файлы index.js и package.json :

Папки с проектом на компьютере и на хостинге

Шаг 4. Зайти на сервер по SSH

Теперь нужно подключиться к серверу по SSH, чтобы установить Node.js и запустить бота. Для этого необходим SSH-клиент, например Putty, XShell, Bitvise SSH или любой другой. Функциональность программ может немного отличаться, но большой разницы в использовании между ними нет. Мы выбрали PuTTY как самый популярный и бесплатный SSH-клиент для Windows.

Открываем PuTTY, указываем IP-адрес сервера, порт 22 уже указан по умолчанию:

Базовые настройки PuTTY

Нажимаем «Соединиться». Откроется окно с запросом логина:

Окно с запросом логина

Вводим root , после чего появится запрос пароля, при вводе которого символы не отображаются. Не стоит переживать, это особенность работы Linux — пароль нужно вводить вслепую. Чтобы не делать этого вручную, можно скопировать пароль и нажать правой кнопкой мыши в окне PuTTY. Убедитесь, что вы скопировали пароль без пробелов!

Шаг 5. Установить Node.js

Теперь займёмся установкой. Обратите внимание, что команды для установки Node.js отличаются в зависимости от операционной системы. В наших примерах указаны команды для Ubuntu, Debian и CentOS — мы будем вводить их в консоли SSH-клиента.

Если вы не знаете, какая ОС установлена на сервере, можете проверить это командой:

Вывод будет примерно таким:

Нас интересует поле NAME , в котором указано название дистрибутива.

Помимо Node.js нам понадобится утилита Screen, чтобы бот продолжал работать, когда мы отключимся от сервера. Также нужен менеджер пакетов npm для установки зависимостей.

для Ubuntu/Debian

Подождём завершения установки и проверим, что Node.js работает:

Если в ответе отобразилась версия установленного пакета, то всё прошло успешно.

Теперь перейдём в папку с файлом бота и установим зависимости:

Возможные ошибки при установке, и как их решить

При установке могут появиться ошибки вида:

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

В первом случае необходимо убедиться, что вы подключились к серверу под именем суперпользователя root — при необходимости зайдите на сервер заново.

Во втором случае для решения проблемы нужно завершить процесс менеджера пакетов и удалить lock -файлы. Чтобы это сделать, запустите команды:

для Ubuntu/Debian

После этого попробуйте заново запустить установку.

Шаг 6. Запустить и проверить бота

Пришло время запустить бота. Для начала запустим утилиту Screen простой командой:

Перейдём в каталог с файлом бота:

После этого можем запустить бота:

Заходим в Telegram, проверяем бота:

Проверка работы бота

Отлично! Всё работает.

Теперь можно отключиться от сервера и закрыть окно PuTTY, бот продолжит работу.

Шаг 7. Обеспечить автоматический перезапуск бота

Из-за ошибок в коде бот может «упасть» в самый неожиданный момент. Чтобы этого не случилось, настроим автозапуск бота при старте сервера и его автоматический перезапуск при ошибках.

Большинство современных Linux-систем используют systemd для управления службами, поэтому следующая инструкция подойдёт для последних версий Ubuntu, Debian и CentOS.

Для начала отключим бота командой:

Нам понадобится создать собственную службу, для этого в каталоге /lib/systemd/system создадим файл:

В нашем случае это будет файл /lib/systemd/system/keksbot.service . В файл поместим следующий код:

Текст в некоторых строках необходимо отредактировать относительно вашего проекта. Разберём строки, на которые нужно обратить внимание.

В поле Description указывается описание службы. Вы можете указать в ней краткую информацию о боте.

Команда для запуска бота.

Её следует поменять, если имя скрипта вашего бота отличается от index.js . В таком случае нужно будет указать следующие значения:

Папка со скриптом, который мы запускаем. В нашем случае это /opt/keksbot/ .

Сохраняем файл. В примерах далее мы будем использовать имя службы keksbot — если вы указали другое имя, не забудьте поменять его. Для установки службы воспользуемся командами:

Теперь запустим бота командой:

Готово. Теперь бот будет автоматически запускаться при старте сервера или при возникновении ошибок. Можно проверить это, завершив процесс node:

Читайте также: