Запускаем телеграм-бота на сервере

Тогда он будет работать круглые сутки, а вы — отдыхать.

Запускаем телеграм-бота на сервере

Не так давно мы создали телеграм-бота на Python: можно было написать ему свой знак зодиака, а он в ответ давал предсказание о долгой счастливой жизни. Но у бота есть недостаток: он работает, пока запущена программа на нашем компьютере. Если мы её остановим или выключим компьютер, бот тоже перестанет отвечать на сообщения.

Вот что мы сделаем, чтобы бот работал независимо от всего:

  1. Выберем сервер и настраиваем хостинг.
  2. Подготовим программу для работы на нём.
  3. Зальём Python-программу на сервер.
  4. Настроим сервер, чтобы на нём можно было запустить телеграм-бота.

Выбираем сервер

Нам нужен сервер, который умеет работать с Python и запускать файлы программы автоматически. На самом деле он у нас уже есть — на нём крутится сайт mihailmaximov.ru. Если вы всё пропустили — держите подборку:

Тот хостинг, который мы выбрали для проектов, уже умеет запускать Python-файлы. Если вы пользуетесь другим сервисом, то проверьте, умеет ли он то же самое.

Готовим программу и отправляем её на сервер

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

Чтобы это узнать, соединимся с сервером по протоколу SSH и спросим у него напрямую. Для этого используем программу Putty, а настройки подключения возьмём в личном кабинете хостинга:

Этих данных достаточно, чтобы управлять сервером по SSH.

Вставляем их в Putty и подключаемся. Помните, что для безопасности во время ввода пароля курсор стоит на месте, чтобы никто не смог выяснить, сколько символов вы набираете. Когда подключились, вводим команду python3.3 -V — она покажет, есть ли на сервере поддержка этой версии Python:

Сервер говорит, что у него установлена версия Python 3.3.5 — нам этого хватит.
Теперь добавляем в самое начало нашего файла с программой такую строчку:

#!/usr/bin/python3.3

В статье о том, как опубликовать сайт в интернете, мы рассказывали, как залить файлы на сервер. Это умение нам сейчас пригодится: сохраняем нашу программу с гороскопом как файл с расширением .py и отправляем его на сервер в папку cgi-bin (то, что лежит в этой папке, никто не увидит):

Запускаем телеграм-бота на сервере

Настраиваем сервер

Теперь научим сервер понимать, как работать с нашей программой. Для этого в корне сайта находим файл .htaccess и добавляем в него такую строчку:

AddHandler cgi-script .py

Если у вас такого файла нет — создайте его и не забудьте про точку в самом начале названия.

Последнее, что осталось сделать, — настроить права доступа у Python-файла с программой. Находим её среди файлов хостинга и выставляем права 755 или rwxrwxr-x:

Запускаем телеграм-бота на сервере

Теперь с помощью Putty снова подключаемся к серверу и настраиваем рабочее окружение. Это как будто виртуальная песочница, где мы сможем ставить нужные модули для Python, чтобы телеграм-бот не мешал остальным пользователям сервера.

Всё, что мы будем делать дальше, относится к хостингу SpaceWeb. Если у вас другой хостинг, то, возможно, часть команд вам не пригодится и Python будет работать напрямую. У нас так не работает, поэтому делаем виртуальное окружение.

В SSH-терминале пишем по очереди такие команды (вместо .thecode можно написать название каталога, которое вам по душе):

virtualenv .thecode source .thecode/bin/activate

Эти две команды создадут виртуальное пространство для запуска Python-файлов.

Теперь установим Python-модуль для работы с Телеграмом:

pip install pytelegrambotapi

Когда установка закончится, пишем такую команду:

nohup python3 /home/t/thecode/osebe/public_html/cgi-bin/telegoroskop.py

/home/t/thecode/osebe/ — это наш путь к папке cgi-bin, а у вас он будет другим. Поменяйте путь на свой и запускайте.

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

Результат проекта — бот @TheCode_Baboolya_bot.

Что дальше

Мы сделали самые базовые вещи — настроили хостинг, запустили Python-скрипт на сервере и сделали так, чтобы телеграм-бот работал там постоянно. Но вот как можно это улучшить:

  • сделать так, чтобы программа сама перезапускалась, если остановится;
  • написать отдельный сервис, через который мы сможем запускать и останавливать бота;
  • прикрутить этот сервис к другому телеграм-боту, чтобы в итоге боты управляли всем миром.

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Вам может быть интересно
Что такое Bootstrap и как его подключить
Что такое Bootstrap и как его подключить

С котиками!

medium
Код и IDE (integrated development environment)
Код и IDE (integrated development environment)

Обзор инструментов крутых программистов.

medium
Как удалить историю разговоров с Google Assistant и Siri
Как удалить историю разговоров с Google Assistant и Siri

Эти голосовые помощники знают о нас слишком много.

Генератор максимально российских названий для российских ИТ-продуктов
Генератор максимально российских названий для российских ИТ-продуктов

Пригодится на будущее

easy
Считаем способы, как подняться по лестнице
Считаем способы, как подняться по лестнице

Очередная задачка с собеседования

easy
[1] + [2] - [3] = 9. Да как так-то?
[1] + [2] - [3] = 9. Да как так-то?

Объясняем, как работает JavaScript

medium
Как сделать свой сайт за 10 минут без программирования
Как сделать свой сайт за 10 минут без программирования

Для некоторых это становится источником постоянного дохода, если подойти к процессу с умом.

easy
Код с собеседования: как купить подешевле и продать подороже?
Код с собеседования: как купить подешевле и продать подороже?

Простой алгоритм с подвохом

easy
Красиво расставляем 8 ферзей на доске
Красиво расставляем 8 ферзей на доске

Веб-проект с алгоритмом поиска с возвратом

medium
hard