Эта короткая инструкция позволит любому из вас запустить (сделать деплой) собственного телеграм-бота на сервере. Быстро, без специальных программ и навыков, используя только ваш браузер!
Не надо никаких мудреных настроек, не надо никаких длинных инструкций. Через 2 минуты ваш бот будет работать на сервере! Поехали!
Мы будем выгружать телеграм бота на сервер хостинг-провайдера Бегет (один из крупнейших хостинг-провайдеров России).
Перейдите на эту страницу, здесь вы найдете нужный вам сервер: https://beget.com/ru/vps
Не волнуйтесь, сейчас вам ничего платить не нужно — первое время сервер для телеграм-бота будет работать без оплаты.
Здесь выберите самый дешевый тариф. Поверьте, если вам нужна эта инструкция, то вам пока незачем брать дорогой сервер. Берите самый дешевый из всех:
Заполните регистрационные данные — ФИО, телефон, почту. Сейчас практически во всех странах требуют подтверждать номер телефона при регистрации:
Опять выбираете самый дешевый тариф, нажимаете “Создать виртуальный сервер”:
Поздравляем, ваш сервер запущен и готов к работе (скорее всего имя сервера у вас будет другое, но на то оно и имя:) ):
Переходим в панели управления в файловый менеджер:
Перед вами папки сервера. Пугаться не нужно, это просто папки операционной системы Ubuntu. Это примерно то же самое, что папки на вашем компьютере на диске “С”.
Создаем прямо здесь папку с названием вашего бота. Пусть это будет “giganika”. (когда будете создавать ботов профессионально, почитайте, в какой директории лучше их размещать — есть разные мнения, но у нас учебное размещение, мы будем создавать папку бота прямо в корне операционной системы — это безопасно, просто не совсем красиво):
Щелкаем мышью 2 раза по нашей папке, переходим в нее:
Сюда загружаем файл нашего бота:
Если у вас не один файл, есть папки — заархивируйте их в zip, загрузите архив на сервер, затем разархивируйте его:
Мы будем размещать простейший эхо-бот, который присылает сообщение обратно. Если у вас пока нет своего, можете взять наш код ( создайте файл main.py и поместите код в него), если есть, размещайте свой:
import telebot bot = telebot.TeleBot(`ВАШ_ТОКЕН_ОТ_BOTFATHER`) @bot.message_handler(content_types=["text"]) def repeat_all_messages(message): bot.send_message(message.chat.id, message.text) if __name__ == '__main__': bot.infinity_polling()
После того, как файл бота загружен, нам надо приступать к его запуску. Наш бот работает на библиотеке pyTelegramBotAPI (в коде бота — telebot). Чтобы наш бот работал, нам надо установить эту библиотеку на сервер. Вы устанавливайте ту, на которой работает ваш бот.
Для работы с сервером нам надо поставить простейшую программу для работы по SSH. Это PuTTy, скачать ее можно на официальном сайте: https://www.putty.org/
Скачайте и установите программу, затем откройте ее. У вас появится такое окно:
Теперь скопируйте ip адрес вашего сервера из панели управления, вот отсюда:
Вставьте скопированный адрес в PuTTy и нажмите “Open”:
В открывшемся черном окошкев строке “login as” вводите «root» и нажмите “Enter”:
В строке “password” — вставьте пароль от вашего сервера — он должен был прийти вам на почту (Если пароль не пришел — в панели управления нажмите “Настройки” — “Сбросить пароль” — “Сбросить и перезагрузить сервер” — новый пароль придет вам на почту).
Важно! В программе PuTTy вставка осуществляется либо одним кликом ПРАВОЙ кнопки мыши, либо сочетанием клавиш SHIFT+Insert.
После того, как вы все сделаете правильно, вы должны увидеть приблизительно такое окно:
В нашем боте используется библиотека “pyTelegramBotAPI”. Если у вас другая — ставьте вашу. Мы же устанавливаем нашу библиотеку “pyTelegramBotAPI” с помощью pip — пишем в терминале:
pip install pyTelegramBotAPI
После того, как библиотека будет установлена, нам останется перейти в терминале в нашу папку с ботом и запустить его. Пишем в терминале «cd /название_папки_с_ботом». У нас это cd /giganika:
Как видим, терминал перешел в нашу папку с ботом:
Теперь здесь запускаем бота с помощью команды nohup и символа & в конце строки (эта команда позволяет боту работать в фоновом режиме):
nohup python3 main.py &
main.py — это имя файла с кодом нашего бота. Если ваш файл называется иначе — замените это имя на ваше.
Готово! Наш бот работает!
Теперь, когда наш бот работает, давайте посмотрим еще пару моментов. Во-первых:
Для того, чтобы остановить бота, запущенного с помощью nohup , в нашем случае проще всего использовать команду killall:
killall python3
Обратите внимание, это остановит все процессы, запущенные python3. У вас других процессов нет, т.к. мы создали сервер только что и бот — это первое, что мы на нем запустили. Но в будущем имейте в виду.
Иногда бывает такое, что бот останавливается. В 99,99% случаев проблема в том, что Телеграм периодически не отвечает на запросы бота (тут можете прочитать, что это за запросы — Как работает телеграм-бот) и бот вылетает с ошибкой. Для того, чтобы ваш бот не останавливался, вам нужно правильно обрабатывать ошибки в скрипте вашего бота. Это тема для отдельной статьи, она больше касается процесса разработки, а не деплоя. Возможно когда-нибудь мы ее напишем. Пока можете погуглить информацию на тему правильной обработки ошибок в телеграм-боте. Суть правильной обработки заключается в том, чтобы при возникновении большинства ошибок скрипт не останавливался, а пробовал повторить операцию еще раз, а информацию об ошибке записывал в логи. Сделать это несложно, но необходимо.