Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать
Telegram боты давно и прочно вошли в нашу жизнь. Каждый день запускаются десятки тысяч ботов с абсолютно разным функционалом, тысячи разработчиков задействованы в их создании и поддержке. И выбор платформы для хостинга бота становится становится очень важной задачей. На мой взгляд, в современном динамичном мире платформа для хостинга Telegram бота должна отвечать нескольким критериям:
- Надежность. Я должен быть уверен что мой бот будет работать 24/7 (если это нужно) и в случае любого сбоя он автоматически перезапустится.
- Я не хочу тратить время на подготовку среды для запуска. Нужна платформа где я могу задеплоить бота за несколько минут в уже полностью подготовленной инфраструктуре используя простой интерфейс панели управления.
- Я хочу иметь возможность простого масштабирования моего проекта в след за ростом количества пользователей.
- Долой фиксированные тарифы. Я хочу иметь возможность самостоятельно резервировать ресурсы под свой проект: объём CPU, памяти и сетевых дисков, который нужен мне для конкретной задачи. И платить только за фактически использованный ресурс.
- Если я запускаю несколько ботов, или прикручиваю базы данных к своим проектам, мне нужна возможность запускать их изолированно друг от друга. При этом нужна возможность легко настроить взаимодействие отдельных модулей между собой в едином интерфейсе.
Для себя я нашел подходящее решение - запуск ботов в Docker-контейнерах на платформе Dockhost. Эта платформа отвечает всем требованиям, описанным выше, и идеально подходит для запуска ботов любой сложности.
Итак, рассмотрим по шагам как запустить Telegram бота на основе библиотеки python-telegram-bot на платформе Dockhost.
В качестве примера, возьмём небольшого Telegram-бота, который отвечает на запросы пользователя фразой равной его запросу (echobot). Исходный код данного Telegram-бота можно посмотреть здесь: https://github.com/dockhost/example-python-telegram-bot .
Подключение репозитория Git
Перед подключением репозитория в корневой директории необходимо создать Dockerfile со следующим содержимым:
Данный Dockerfile использует базовый образ python:3.9, устанавливает все зависимости из файла requirements.txt и копирует содержимое из всего репозитория в папку /app. В качестве основной команды будет использоваться python main.py. В дальнейшем из данного Dockerfile будет собран и запущен контейнер с Telegram-ботом.
Теперь в Вашем репозитории есть Dockerfile и Вы можете подключить его (репозиторий) к платформе Dockhost. Для этого в проекте my-project (проект может быть любым, для примера мы будем использовать my-project, который создаётся по умолчанию при регистрации на платформе) необходимо перейти в раздел «Репозитории Git» и добавить репозиторий.
В нашем примере Git-репозиторий является публичным и не требует авторизации. Для того чтобы подключить приватный Git-репозиторий, необходимо указать имя пользователя и пароль в разделе «Авторизация».
Для подключения приватного репозитория GitHub необходимо использовать Personal access tokens. Как использовать персональный токен смотрите в статье Using a personal access token
Далее нажмите на кнопку «Применить» и дождитесь завершения процесса подключения репозитория и первой сборки контейнера из репозитория.
Настройка контейнера
Как только процесс сборки будет завершён, в разделе «Контейнеры» появится контейнер Telegram-бота.
Это связано с тем, что в файле main.py мы специально вынесли токен от Telegram-бота в переменную окружения.
Далее необходимо отредактировать параметры контейнера, для этого нажмите на кнопку «Управлять», чтобы перейти в раздел просмотра контейнера и на открывшейся странице нажмите на кнопку «Редактировать».
После перезапуска контейнера в логах будет запись об успешном старте приложения. Теперь Telegram-бот полностью настроен и запущен, а благодаря настройке деплоя через Push, при изменении кода платформа Dockhost будет автоматически собирать и запускать новую версию Telegram-бота.
В дальнейшем Вы можете взять за основу наш репозиторий https://github.com/dockhost/example-python-telegram-bot и расширить функционал, при необходимости добавив новые команды и функции.
Если у Вас уже есть свой Telegram-бот, написанный на Python, Вы можете также просто запустить его на платформе Dockhost, используя пошаговый алгоритм из данной статьи. Для этого воспользуйтесь примерами Dockerfile и придерживайтесь описанной последовательности действий.
Надеюсь приведенный алгоритм поможет вам быстро и без проблем запустить своего бота и вы на практике оцените преимущества хостинга ботов на специализированных платформах для запуска Docker-контейнеров. Dockhost - одна из таких платформ, но не единственная. Я привел этот пример как оптимальный для меня по соотношению качество/функциональность/стоимость. Вы можете воспользоваться поиском и найти платформу по своему вкусу.