- tocdepth
2
Запуск Telegram-бота на Python на виртуальной машине
В этой лабораторной работе вы запустите Telegram-бота на Python на виртуальной машине платформы Evolution.
Для развертывания вы будете использовать следующие сервисы:
Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.
Публичный IP-адрес для организации работы с Telegram через webhook.
Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.
Шаги:
Перед началом работы
Зарегистрируйтесь в личном кабинете Cloud.ru.
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Разверните ресурсы в облаке
Создайте бесплатную виртуальную машину со следующими параметрами:
В поле Название укажите название виртуальной машины, например telegram-bot-server.
На вкладке Маркетплейс выберите образ Ubuntu 22.04.
Назначьте публичный IP-адрес виртуальной машине — оставьте включенной опцию Подключить публичный IP. Для виртуальной машины будет арендован и назначен прямой публичный IP.
В поле Имя пользователя укажите логин пользователя виртуальной машины, например, user1.
Выберите метод аутентификации — пароль.
В поле Имя хоста укажите уникальное имя устройства, по которому можно идентифицировать виртуальную машину в сети, например, telegram-bot-server.
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины»:
отображается виртуальная машина telegram-bot-server;
статус виртуальной машины — «Запущена»;
виртуальной машине назначен публичный IP-адрес.
2. Настройте группы безопасности
Группы безопасности в облаке Cloud.ru Evolution позволяют контролировать входящий и исходящий трафик для создаваемых ресурсов.
Вы настроите правила фильтрации трафика — разрешите весь исходящий трафик. Создайте новую группу безопасности со следующими параметрами:
Выберите Зону доступности, в которой необходимо разместить группу безопасности. Укажите ту же зону доступности, что выбрана для виртуальной машины telegram-bot-server.
Укажите Название группы безопасности, например, telegram-bot-server.
Добавьте правило исходящего трафика:
Протокол — любой
Порт — оставьте пустым
Тип адресата — IP-адрес
Адресат — 0.0.0.0/0
Назначьте созданную группу безопасности виртуальной машине «telegram-bot-server» и удалите все остальные.
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины», в разделе Сетевые параметры отображается группа безопасности telegram-bot-server.

3. Зарегистрируйте бота в Telegram
Чтобы зарегистрировать нового бота в Telegram и получить для него токен:
В Telegram найдите бота BotFather.
Выполните команду
/newbot
.Задайте имя (name) и имя пользователя (username) для бота.
Имя пользователя должно заканчиваться на «Bot» или «_bot».
В результате регистрации BotFather сообщит вам токен бота. Сохраните его, он понадобится далее.
Убедитесь, что в Telegram созданный бот при поиске по имени отображается в результатах поиска.
4. Подготовьте и запустите код бота
Для настройки виртуальной машины вы будете использовать серийную консоль в браузере.
Подключитесь к виртуальной машине telegram-bot-server через серийную консоль.
Обновите индекс пакетов ОС, установите обновления пакетов и необходимые зависимости:
sudo apt update -y sudo apt upgrade -y sudo apt-get install python3 python3-pip -y pip3 install python-telegram-bot
Создайте отдельную папку для размещения бота и перейдите в нее:
mkdir ./app cd ./app
Cоздайте файл
bot.py
:nano bot.py
Скопируйте код бота в файл.
В строке 57 замените
TOKEN
на токен бота, полученный от BotFather.Измененный код вставьте в серийную консоль.
Нажмите
Ctrl + X
, затемy
, чтобы сохранить изменения.
Теперь вы запустите бота в качестве службы. Бот будет работать постоянно и запускаться автоматически при старте или перезагрузке виртуальной машины.
Подключитесь к виртуальной машине telegram-bot-server через серийную консоль.
Создайте файл
python-bot.service
:sudo nano /etc/systemd/system/python-bot.service
Вставьте код в файл:
[Unit] Description=My Python Bot Wants=network-online.target After=network-online.target [Service] Type=simple User=<VM_username> ExecStart=/usr/bin/python3 /home/user1/app/bot.py WorkingDirectory=/home/user1/app [Install] WantedBy=multi-user.target
Где
User
— имя пользователя виртуальной машины telegram-bot-server.Нажмите
Ctrl + X
, затемy
, чтобы сохранить изменения.Перезапустите systemd:
sudo systemctl daemon-reload
Включите службу python-bot.service:
sudo systemctl enable python-bot
Запустите службу python-bot.service:
sudo systemctl start python-bot
Выполните команду:
sudo systemctl status python-bot
В результате должен отобразиться статус службы — «Active (running)».
Вывод команды
5. Протестируйте работу бота
Найдите в Telegram вашего бота и напишите ему. Бот поздоровается с вами в начале диплога, а затем будет повторять ваши сообщения.
Перезагрузите виртуальную машину.
Напишите сообщение в бота — бот должен ответить несмотря на перезагрузку сервера.
Что дальше
В этой лабораторной работе мы запустили Telegram-бота на Python в качестве службы, используя виртуальную машину в облачной платформе Cloud.ru Evolution. Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.
для юрлиц и ИП