Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

Хостинг 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 со следующим содержимым:

FROM python:3.9 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY . /app CMD ["python", "main.py"]

Данный Dockerfile использует базовый образ python:3.9, устанавливает все зависимости из файла requirements.txt и копирует содержимое из всего репозитория в папку /app. В качестве основной команды будет использоваться python main.py. В дальнейшем из данного Dockerfile будет собран и запущен контейнер с Telegram-ботом.

Теперь в Вашем репозитории есть Dockerfile и Вы можете подключить его (репозиторий) к платформе Dockhost. Для этого в проекте my-project (проект может быть любым, для примера мы будем использовать my-project, который создаётся по умолчанию при регистрации на платформе) необходимо перейти в раздел «Репозитории Git» и добавить репозиторий.

Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

В нашем примере Git-репозиторий является публичным и не требует авторизации. Для того чтобы подключить приватный Git-репозиторий, необходимо указать имя пользователя и пароль в разделе «Авторизация».

Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

Для подключения приватного репозитория GitHub необходимо использовать Personal access tokens. Как использовать персональный токен смотрите в статье Using a personal access token

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса подключения репозитория и первой сборки контейнера из репозитория.

Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

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

Как только процесс сборки будет завершён, в разделе «Контейнеры» появится контейнер Telegram-бота.

Telegram-бот не запустится сразу и в логах будет сообщение об ошибке.
Telegram-бот не запустится сразу и в логах будет сообщение об ошибке.
Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

Это связано с тем, что в файле main.py мы специально вынесли токен от Telegram-бота в переменную окружения.

application = Application.builder().token( os.environ.get("TOKEN") ).build()

Далее необходимо отредактировать параметры контейнера, для этого нажмите на кнопку «Управлять», чтобы перейти в раздел просмотра контейнера и на открывшейся странице нажмите на кнопку «Редактировать».

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса перезапуска контейнера.
Далее нажмите на кнопку «Применить» и дождитесь завершения процесса перезапуска контейнера.
Хостинг Telegram бота на Python: где можно быстро поселить своего бота и не переплачивать

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

В дальнейшем Вы можете взять за основу наш репозиторий https://github.com/dockhost/example-python-telegram-bot и расширить функционал, при необходимости добавив новые команды и функции.

Если у Вас уже есть свой Telegram-бот, написанный на Python, Вы можете также просто запустить его на платформе Dockhost, используя пошаговый алгоритм из данной статьи. Для этого воспользуйтесь примерами Dockerfile и придерживайтесь описанной последовательности действий.

Надеюсь приведенный алгоритм поможет вам быстро и без проблем запустить своего бота и вы на практике оцените преимущества хостинга ботов на специализированных платформах для запуска Docker-контейнеров. Dockhost - одна из таких платформ, но не единственная. Я привел этот пример как оптимальный для меня по соотношению качество/функциональность/стоимость. Вы можете воспользоваться поиском и найти платформу по своему вкусу.

22
1 комментарий

Нахуй надо

Ответить