---
title: Telegram-бот — пример руководства по запуску проекта
description: Пример запуска проекта Telegram-бота в cPanel с использованием Flask и вебхуков
navigation: true

badges:
  - value: Веб-хостинг
    to: /shared-hosting
    target: _self
    icon: lucide:layout-template

authors:
  - name: Sherali Salomidinov
    username: coderplusdesigner
---

## Проект, взятый для примера

Подготовленный нами проект Telegram-бота — это одно из самых простых приложений на `python`. После его запуска, если вы напишете «salom», «hi» или «привет», он вернет вам приветствие. На любое другое сообщение, кроме этих трех слов, он ответит, что вам нужно написать одно из трех ключевых слов.

Хотя проект очень прост, его подготовка к production и размещение на сервере могут показаться немного сложными. Причина в том, что размещение и запуск такого проекта именно в cPanel требует соблюдения определенных правил и настроек.

В локальной среде — на вашем компьютере — вы можете легко тестировать Telegram-бот с помощью обычного polling (постоянный цикл, запрашивающий у Telegram «нет ли новых сообщений»). Однако на VDS/VPS серверах и в готовых панелях, например, в среде cPanel, существуют свои правила и порядок действий.

### Зачем использовать Flask и webhook

Наиболее правильный путь — использовать вебхуки и один из минимальных фреймворков, например Flask, который мы и используем. То есть с вебхуками мы не проверяем постоянно сервер Telegram вопросом «есть ли новое сообщение?». Telegram сам доставляет новые сообщения на подтвержденный нами URL. Flask же выполняет роль удобной среды для приема и обработки таких сообщений от вебхука.

### Скачивание проекта

:read-more{icon="lucide:link" title="Github" to="https://github.com/coderPlusDesigner/hms-tgbot-sample" target="_blank"}

:download-button{ url="/sample-projects/telegram_bot-sample.zip" filename="telegram_bot-sample.zip" title="Скачать пример проекта в формате .zip" icon="lucide:download"}

## Запуск проекта в cPanel

::steps{level=5}

  ##### Создание субдомена для проекта

  > cPanel → Domains → Create A New Domain
  
  Создаем отдельный субдомен для проекта. Поскольку Telegram работает только по протоколу `https`, мы создаем субдомен `tg-bot.scroll.uz` и убеждаемся, что для него выпущен SSL-сертификат.

  > Создание субдомена также автоматически создает папку с точно таким же названием

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_1.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_1.png
  alt: Fig 1 | Telegram bot/Flask sample project
  ---
  ::

  ##### Создание Python App (приложения среды выполнения) для проекта

  > cPanel → Setup Python App → Create Application

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_2.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_2.png
  alt: Fig 2 | Telegram bot/Flask sample project
  ---
  ::

  1. Python version — выбираем версию Python, соответствующую версиям Flask и других библиотек;
  2. Application root — папка проекта, в которой будет запускаться приложение. В нашем случае это папка, созданная для нашего субдомена — `tg-bot.scroll.uz`. Если вы настраиваете для основного домена, то `public_html`;
  3. Application URL — имя домена, выбираемое для этого приложения. В нашем случае выбирается субдомен `tg-bot.scroll.uz`;
  4. В поля «Application startup file» и «Application Entry point» ничего вводить не нужно. При создании приложения им автоматически присваиваются значения `passenger_wsgi.py` и `application`;
  5. На всякий случай настроим .log файл, сохраняющий логи. В дальнейшем, если в проекте возникнет какая-либо проблема, ее причину можно будет посмотреть и определить в этом лог-файле.

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_3.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_3.png
  alt: Fig 3 | Telegram bot/Flask sample project
  ---
  ::

  > После создания приложения в верхней части будет предоставлена готовая терминальная команда для открытия его папки и активации среды. Сохраните её временно куда-нибудь. Чуть позже эта команда понадобится для установки библиотек через Терминал.

  ##### Загрузка архива проекта на сервер

  > cPanel → File Manager → /home/scroll/tg-bot.scroll.uz
  
  Чтобы загрузить архив проекта в нужное место на сервере, открываем папку субдомена через интерфейс «File Manager» и нажимаем кнопку «Upload» (загрузить):

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_4.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_4.png
  alt: Fig 4 | Telegram bot/Flask sample project
  ---
  ::

  Выбираем архив проекта и загружаем его:
  
  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_5.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_5.png
  alt: Fig 5 | Telegram bot/Flask sample project
  ---
  ::
  
  После завершения загрузки нажимаем «назад»:
  
  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_6.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_6.png
  alt: Fig 6 | Telegram bot/Flask sample project
  ---
  ::

  Распаковываем загруженный архив:

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_7.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_7.png
  alt: Fig 7 | Telegram bot/Flask sample project
  ---
  ::

  Таким образом, мы загружаем файлы проекта в нужную папку на сервере.

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_8.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_8.png
  alt: Fig 8 | Telegram bot/Flask sample project
  ---
  ::

  ##### Настройка проекта для Production / создание Telegram-бота

  Первое действие — внутри проекта вам будет предоставлен файл `sample.passenger_wsgi.py`. Скопируйте его код в файл `passenger_wsgi.py` и сохраните.

  Второе действие — создайте Telegram-бот через [@BotFather](https://telegram.me/BotFather){target=_blank}, скопируйте значение токена бота в соответствующую часть файла `config.py` в проекте и сохраните.

  ##### Установка библиотек

  > cPanel → Terminal

  Через Терминал сначала активируем env, используя команду, указанную в «Python App».

  Затем, используя файл requirements.txt, устанавливаем все необходимые библиотеки:

  ```bash
  pip install -r requirements.txt
  ```

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_9.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_9.png
  alt: Fig 9 | Telegram bot/Flask sample project
  ---
  ::

  ##### Перезапускаем приложение
  
  > cPanel → Setup Python App

  Открываем интерфейс приложения и перезапускаем его:

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_10.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_10.png
  alt: Fig 10 | Telegram bot/Flask sample project
  ---
  ::

  ##### Отправляем в Telegram одноразовый URL-адрес вебхука

  > cPanel → Terminal

  Этим действием Telegram настраивает у себя адрес, на который он должен отправлять запросы вебхука (ответные сообщения).

  Для этого возвращаемся в Терминал и запускаем команду следующего вида:

  ```bash
  curl -F "url=https://<YOUR_DOMAIN>/webhook" \
     https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook
  ```

  Это, конечно, пример команды. Вместо `<YOUR_DOMAIN>` и `<YOUR_BOT_TOKEN>` должны быть подставлены соответствующие значения.

  Например, с нашим временно созданным доменом и токеном она примет следующий вид:

  ```bash
  curl -F "url=https://tg-bot.scroll.uz/webhook" \
     https://api.telegram.org/bot8667036217:AAFrlLgJK-7jmFrYzpe6uYHMUQ8s55BzHSs/setWebhook
  ```

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_11.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_11.png
  alt: Fig 11 | Telegram bot/Flask sample project
  ---
  ::

  Результат, как на картинке, показывает, что настройка URL прошла успешно.

  ##### Проверяем бота

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_12.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_12.png
  alt: Fig 12 | Telegram bot/Flask sample project
  ---
  ::

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

::

## Удаление примера проекта из cPanel

Существуют ситуации, на которые мы можем не обращать пристального внимания, но если они выполнены неправильно, это может привести к неожиданным проблемам и трудностям. Одна из таких ситуаций — правильное удаление проекта, созданного через «Setup Python App». Если порядок удаления проекта нарушен, могут возникнуть непредвиденные проблемы.

::steps{level=5}

  ##### Удаление приложения

  > cPanel → Setup Python App

  В самую первую очередь приложение необходимо остановить (stop), а затем отправить на удаление (delete):

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_13.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_13.png
  alt: Fig 13 | Telegram bot/Flask sample project
  ---
  ::

  ##### Удаление субдомена

  > cPanel → Domains → Manage

  Затем мы можем удалить субдомен, созданный в качестве примера:

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_14.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_14.png
  alt: Fig 14 | Telegram bot/Flask sample project
  ---
  ::

  ##### Удаление папки проекта

  > cPanel → File Manager

  Удаление субдомена не удаляет его папку. Папку проекта мы удаляем сами через интерфейс «File Manager»:

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/telegram_bot-sample_15.png
  srcDark: /images/shared-hosting/en/telegram_bot-sample_15.png
  alt: Fig 15 | Telegram bot/Flask sample project
  ---
  ::

  Таким образом, проект будет полностью и без проблем удален.
::

---

**Source URL:** https://support.hostmaster.uz/ru/shared-hosting/cpanel/telegram-bot-sample-with-flask
