Облачная платформаEvolution

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


С помощью этого руководства вы запустите Telegram-бота на Python на виртуальной машине.

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

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

  • «Публичные IP» — сервис для организации доступа в Telegram через webhook.

  • BotFather — Telegram-бот для создания ботов.

Шаги:

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

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

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

На этом шаге вы создадите бесплатную виртуальную машину, назначите ей публичный IP-адрес и настроите правила фильтрации трафика через него.

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

    • Названиеtelegram-bot-server.

    • Образ — на вкладке Публичные выберите образ Ubuntu 22.04.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Логин — оставьте значение по умолчанию или укажите новый.

    • Метод аутентификацииПубличный ключ и Пароль.

    • Метод аутентификации — выберите Пароль.

    • Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.

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

  3. Создайте группу безопасности с названием telegram-bot-server в той же зоне доступности и добавьте в нее правила:

    Трафик

    Протокол

    Порт

    Тип источника/адресата

    Источник/Адресат

    Исходящий

    Любой

    IP-адрес

    0.0.0.0/0

  4. Проверьте создание ресурсов:

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

    2. Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина telegram-bot-server со статусом «Запущена». Виртуальной машине назначен публичный IP-адрес.

    3. Скопируйте и сохраните публичный IP-адрес, он понадобится далее.

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

На этом шаге вы зарегистрируете в Telegram нового бота и получите его токен.

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

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

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

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

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

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

3. Настройте виртуальную машину

На этом шаге вы установите необходимые пакеты и подготовите среду.

  1. Обновите систему и установите утилиты:

    sudo apt update && sudo apt upgrade -y
  2. Установите Python:

    sudo apt-get install python3 python3-pip -y
  3. Проверьте установку:

    python3 --version & pip --version
  4. Установите библиотеки для отправки запросов и планирования задач:

    pip3 install python-telegram-bot

4. Разместите код бота на виртуальной машине

На этом шаге вы скопируете код бота и разместите его на виртуальной машине.

  1. На виртуальной машине создайте папку проекта и перейдите в нее:

    mkdir ./app
    cd ./app
  2. Cоздайте файл bot.py и скопируйте в него код бота из примера.

  3. В коде замените TOKEN на токен бота, полученный от BotFather, и сохраните изменения.

5. Запустите бота в качестве службы

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

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

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

    [Unit]
    Description=My Python Bot
    Wants=network-online.target
    After=network-online.target
    [Service]
    Type=simple
    User=<vm_username>
    ExecStart=/usr/bin/python3 /home/<vm_username>/app/bot.py
    WorkingDirectory=/home/<vm_username>/app
    [Install]
    WantedBy=multi-user.target

    Где <vm_username> — имя пользователя виртуальной машины telegram-bot-server.

  3. Сохраните изменения.

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

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

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

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

    sudo systemctl status python-bot

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

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

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

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

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

Результат

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