tocdepth

2

Запуск Telegram-бота на Python на виртуальной машине

В этой лабораторной работе вы запустите Telegram-бота на Python на виртуальной машине платформы Evolution.

Для развертывания вы будете использовать следующие сервисы:

  • Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.

  • Публичный IP-адрес для организации работы с Telegram через webhook.

  • Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.

Шаги:

  1. Разверните ресурсы в облаке

  2. Настройте группы безопасности

  3. Зарегистрируйте бота в Telegram

  4. Подготовьте и запустите код бота

  5. Протестируйте работу бота

Перед началом работы

Зарегистрируйтесь в личном кабинете Cloud.ru.

Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Разверните ресурсы в облаке

Создайте бесплатную виртуальную машину со следующими параметрами:

  1. В поле Название укажите название виртуальной машины, например telegram-bot-server.

  2. На вкладке Маркетплейс выберите образ Ubuntu 22.04.

  3. Назначьте публичный IP-адрес виртуальной машине — оставьте включенной опцию Подключить публичный IP. Для виртуальной машины будет арендован и назначен прямой публичный IP.

  4. В поле Имя пользователя укажите логин пользователя виртуальной машины, например, user1.

  5. Выберите метод аутентификации — пароль.

  6. В поле Имя хоста укажите уникальное имя устройства, по которому можно идентифицировать виртуальную машину в сети, например, telegram-bot-server.

Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины»:

  • отображается виртуальная машина telegram-bot-server;

  • статус виртуальной машины — «Запущена»;

  • виртуальной машине назначен публичный IP-адрес.

2. Настройте группы безопасности

Группы безопасности в облаке Cloud.ru Evolution позволяют контролировать входящий и исходящий трафик для создаваемых ресурсов.

Вы настроите правила фильтрации трафика — разрешите весь исходящий трафик. Создайте новую группу безопасности со следующими параметрами:

  1. Выберите Зону доступности, в которой необходимо разместить группу безопасности. Укажите ту же зону доступности, что выбрана для виртуальной машины telegram-bot-server.

  2. Укажите Название группы безопасности, например, telegram-bot-server.

  3. Добавьте правило исходящего трафика:

    1. Протокол — любой

    2. Порт — оставьте пустым

    3. Тип адресата — IP-адрес

    4. Адресат — 0.0.0.0/0

  4. Назначьте созданную группу безопасности виртуальной машине «telegram-bot-server» и удалите все остальные.

Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины», в разделе Сетевые параметры отображается группа безопасности telegram-bot-server.

../_images/img__tg-bot__security-groups.png

3. Зарегистрируйте бота в Telegram

Чтобы зарегистрировать нового бота в Telegram и получить для него токен:

  1. В Telegram найдите бота BotFather.

  2. Выполните команду /newbot.

  3. Задайте имя (name) и имя пользователя (username) для бота.

    Имя пользователя должно заканчиваться на «Bot» или «_bot».

    В результате регистрации BotFather сообщит вам токен бота. Сохраните его, он понадобится далее.

  4. Убедитесь, что в Telegram созданный бот при поиске по имени отображается в результатах поиска.

4. Подготовьте и запустите код бота

Для настройки виртуальной машины вы будете использовать серийную консоль в браузере.

  1. Подключитесь к виртуальной машине telegram-bot-server через серийную консоль.

  2. Обновите индекс пакетов ОС, установите обновления пакетов и необходимые зависимости:

    sudo apt update -y
    sudo apt upgrade -y
    sudo apt-get install python3 python3-pip -y
    pip3 install python-telegram-bot
    
  3. Создайте отдельную папку для размещения бота и перейдите в нее:

    mkdir ./app
    cd ./app
    
  4. Cоздайте файл bot.py:

    nano bot.py
    
  5. Скопируйте код бота в файл.

  6. В строке 57 замените TOKEN на токен бота, полученный от BotFather.

    ../_images/img__tg-bot__token.png
  7. Измененный код вставьте в серийную консоль.

    ../_images/img__tg-bot__console-vm.png
  8. Нажмите Ctrl + X, затем y, чтобы сохранить изменения.

Теперь вы запустите бота в качестве службы. Бот будет работать постоянно и запускаться автоматически при старте или перезагрузке виртуальной машины.

  1. Подключитесь к виртуальной машине telegram-bot-server через серийную консоль.

  2. Создайте файл python-bot.service:

    sudo nano /etc/systemd/system/python-bot.service
    
  3. Вставьте код в файл:

    [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.

  4. Нажмите Ctrl + X, затем y, чтобы сохранить изменения.

  5. Перезапустите systemd:

    sudo systemctl daemon-reload
    
  6. Включите службу python-bot.service:

    sudo systemctl enable python-bot
    
  7. Запустите службу python-bot.service:

    sudo systemctl start python-bot
    
  8. Выполните команду:

    sudo systemctl status python-bot
    

    В результате должен отобразиться статус службы — «Active (running)».

    Вывод команды

    ../_images/img__tg-bot__active-status.png

5. Протестируйте работу бота

  1. Найдите в Telegram вашего бота и напишите ему. Бот поздоровается с вами в начале диплога, а затем будет повторять ваши сообщения.

  2. Перезагрузите виртуальную машину.

  3. Напишите сообщение в бота — бот должен ответить несмотря на перезагрузку сервера.

Что дальше

В этой лабораторной работе мы запустили Telegram-бота на Python в качестве службы, используя виртуальную машину в облачной платформе Cloud.ru Evolution. Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.

Дарим 20 000 бонусов на тест
для юрлиц и ИП
Подробнее