Скачать пример проекта в формате .zip
telegram_bot-sample.zip
Пример запуска проекта Telegram-бота в cPanel с использованием Flask и вебхуков
Подготовленный нами проект Telegram-бота — это одно из самых простых приложений на python. После его запуска, если вы напишете «salom», «hi» или «привет», он вернет вам приветствие. На любое другое сообщение, кроме этих трех слов, он ответит, что вам нужно написать одно из трех ключевых слов.
Хотя проект очень прост, его подготовка к production и размещение на сервере могут показаться немного сложными. Причина в том, что размещение и запуск такого проекта именно в cPanel требует соблюдения определенных правил и настроек.
В локальной среде — на вашем компьютере — вы можете легко тестировать Telegram-бот с помощью обычного polling (постоянный цикл, запрашивающий у Telegram «нет ли новых сообщений»). Однако на VDS/VPS серверах и в готовых панелях, например, в среде cPanel, существуют свои правила и порядок действий.
Наиболее правильный путь — использовать вебхуки и один из минимальных фреймворков, например Flask, который мы и используем. То есть с вебхуками мы не проверяем постоянно сервер Telegram вопросом «есть ли новое сообщение?». Telegram сам доставляет новые сообщения на подтвержденный нами URL. Flask же выполняет роль удобной среды для приема и обработки таких сообщений от вебхука.
telegram_bot-sample.zip
cPanel → Domains → Create A New Domain
Создаем отдельный субдомен для проекта. Поскольку Telegram работает только по протоколу https, мы создаем субдомен tg-bot.scroll.uz и убеждаемся, что для него выпущен SSL-сертификат.
Создание субдомена также автоматически создает папку с точно таким же названием
cPanel → Setup Python App → Create Application
tg-bot.scroll.uz. Если вы настраиваете для основного домена, то public_html;tg-bot.scroll.uz;passenger_wsgi.py и application;После создания приложения в верхней части будет предоставлена готовая терминальная команда для открытия его папки и активации среды. Сохраните её временно куда-нибудь. Чуть позже эта команда понадобится для установки библиотек через Терминал.
cPanel → File Manager → /home/scroll/tg-bot.scroll.uz
Чтобы загрузить архив проекта в нужное место на сервере, открываем папку субдомена через интерфейс «File Manager» и нажимаем кнопку «Upload» (загрузить):
Выбираем архив проекта и загружаем его:
После завершения загрузки нажимаем «назад»:
Распаковываем загруженный архив:
Таким образом, мы загружаем файлы проекта в нужную папку на сервере.
Первое действие — внутри проекта вам будет предоставлен файл sample.passenger_wsgi.py. Скопируйте его код в файл passenger_wsgi.py и сохраните.
Второе действие — создайте Telegram-бот через @BotFather, скопируйте значение токена бота в соответствующую часть файла config.py в проекте и сохраните.
cPanel → Terminal
Через Терминал сначала активируем env, используя команду, указанную в «Python App».
Затем, используя файл requirements.txt, устанавливаем все необходимые библиотеки:
cPanel → Setup Python App
Открываем интерфейс приложения и перезапускаем его:
cPanel → Terminal
Этим действием Telegram настраивает у себя адрес, на который он должен отправлять запросы вебхука (ответные сообщения).
Для этого возвращаемся в Терминал и запускаем команду следующего вида:
Это, конечно, пример команды. Вместо <YOUR_DOMAIN> и <YOUR_BOT_TOKEN> должны быть подставлены соответствующие значения.
Например, с нашим временно созданным доменом и токеном она примет следующий вид:
Результат, как на картинке, показывает, что настройка URL прошла успешно.
Как видите, бот выполняет свою задачу. Теперь самостоятельно изучите наш минимальный проект, посмотрите, как в нем реализован процесс, и примените это к своему проекту.
Существуют ситуации, на которые мы можем не обращать пристального внимания, но если они выполнены неправильно, это может привести к неожиданным проблемам и трудностям. Одна из таких ситуаций — правильное удаление проекта, созданного через «Setup Python App». Если порядок удаления проекта нарушен, могут возникнуть непредвиденные проблемы.
cPanel → Setup Python App
В самую первую очередь приложение необходимо остановить (stop), а затем отправить на удаление (delete):
cPanel → Domains → Manage
Затем мы можем удалить субдомен, созданный в качестве примера:
cPanel → File Manager
Удаление субдомена не удаляет его папку. Папку проекта мы удаляем сами через интерфейс «File Manager»:
Таким образом, проект будет полностью и без проблем удален.