С помощью этого руководства вы запустите Telegram-бота на Python на виртуальной машине.
Вы будете использовать следующие сервисы:
Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.
«Публичные IP» — сервис для организации доступа в Telegram через webhook.
BotFather — Telegram-бот для создания ботов.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
На этом шаге вы создадите бесплатную виртуальную машину, назначите ей публичный IP-адрес и настроите правила фильтрации трафика через него.
Создайте бесплатную виртуальную машину со следующими параметрами:
Название — telegram-bot-server.
Образ — на вкладке Публичные выберите образ Ubuntu 22.04.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Логин — оставьте значение по умолчанию или укажите новый.
Метод аутентификации — Публичный ключ и Пароль.
Метод аутентификации — выберите Пароль.
Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.
Уточните зону доступности, в которой была создана виртуальная машина.
Создайте группу безопасности с названием telegram-bot-server в той же зоне доступности и добавьте в нее правила:
Трафик | Протокол | Порт | Тип источника/адресата | Источник/Адресат |
|---|---|---|---|---|
Исходящий | Любой | — | IP-адрес | 0.0.0.0/0 |
Проверьте создание ресурсов:
Убедитесь, что в личном кабинете на странице Сети → Группы безопасности отображается группа безопасности telegram-bot-server со статусом «Создана».
Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина telegram-bot-server со статусом «Запущена». Виртуальной машине назначен публичный IP-адрес.
Скопируйте и сохраните публичный IP-адрес, он понадобится далее.
На этом шаге вы зарегистрируете в Telegram нового бота и получите его токен.
В Telegram найдите бота BotFather.
Выполните команду /newbot.
Задайте имя (name) и имя пользователя (username) для бота.
Имя пользователя должно заканчиваться на Bot или _bot.
В результате регистрации BotFather сообщит токен бота. Сохраните его, он понадобится далее.
Убедитесь, что созданный бот отображается в Telegram при поиске по имени.
На этом шаге вы установите необходимые пакеты и подготовите среду.
Обновите систему и установите утилиты:
sudo apt update && sudo apt upgrade -y
Установите Python:
sudo apt-get install python3 python3-pip -y
Проверьте установку:
python3 --version & pip --version
Установите библиотеки для отправки запросов и планирования задач:
pip3 install python-telegram-bot
На этом шаге вы скопируете код бота и разместите его на виртуальной машине.
На виртуальной машине создайте папку проекта и перейдите в нее:
mkdir ./appcd ./app
Cоздайте файл bot.py и скопируйте в него код бота из примера.
В коде замените TOKEN на токен бота, полученный от BotFather, и сохраните изменения.
Чтобы бот работал постоянно и запускался автоматически при старте или перезагрузке виртуальной машины, запустите бота в качестве службы.
Создайте файл python-bot.service:
sudo nano /etc/systemd/system/python-bot.service
Вставьте код в файл:
[Unit]Description=My Python BotWants=network-online.targetAfter=network-online.target[Service]Type=simpleUser=<vm_username>ExecStart=/usr/bin/python3 /home/<vm_username>/app/bot.pyWorkingDirectory=/home/<vm_username>/app[Install]WantedBy=multi-user.target
Где <vm_username> — имя пользователя виртуальной машины telegram-bot-server.
Сохраните изменения.
Перезапустите 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)».
Найдите в Telegram вашего бота и напишите ему. Бот поздоровается с вами в начале диалога, а затем будет повторять ваши сообщения.
Перезагрузите виртуальную машину.
Напишите сообщение боту — бот должен ответить несмотря на перезагрузку сервера.
Вы запустили Telegram-бота на Python в качестве службы, используя виртуальную машину.