Деплой телеграм-бота на примере PyTelegramBotApi
Начнём с описания проекта, ведь чтобы что-то деплоить, нужно что-то разработать.
Проект, на примере которого я буду деплоить – бот сбора обратной связи (отзывов) у клиентов.
Функциональность бота:
- Отправлять приветственное сообщение при первом входе в бота;
- Предоставить клавиатуру с кнопкой “Написать в поддержку”;
- При нажатии на неё запрашивать у пользователя имя и фамилию;
- После дать возможность изменить введённые данные;
- После этого, пользователь вводит текст отзыва;
- Отзыв пересылается администратору, с указанием введённых имени и фамилии.
Итоговый код бота выглядит так:
Файл config.py:
В файле config.py мы указываем токен, который необходим для корректной работы бота.
Основной файл main.py:
В этом файле содержится основная логика бота.
Также нам необходим файл зависимостей requirements.txt. В него необходимо добавить все использованные сторонние библиотеки (например: pytelegrambotapi). Команда для этого: pip3 freeze > requirements.txt
Пример файла
Но если мы сейчас запустим нашего бота на ПК, то он будет работать пока наше устройство запущено.
Есть много компаний которые позволяет вам арендовать сервер, я буду показывать на примере одного из самых доступных и интересных облачных провайдеров Amvera. Эта компания отличается от конкурентов в первую очередь демократичной ценой, и максимально простым и удобным деплоем проекта через push в Git, либо через перетягивание файлов в интерфейсе, если не хотите работать с Git.
Первое что необходимо сделать - перейти на сайт Amvera и зарегистрироваться.
После регистрации вам сразу будет доступно 111р. Это хватит на несколько недель работы проекта.
После нажатия кнопки создать, указываем название нашего проекта, далее тип (оставим приложение) и выбираем конфигурацию. Для нашего проекта нам будет достаточно "Пробного" тарифа за 170 руб., для более крупных решений уже необходимо выбирать старшие тарифные планы.
Деплой телеграм-бота
Добавим файлы на сервер. Для этого либо воспользуемся загрузкой через интерфейс, либо используем push в Git, что правильнее, так-как это позволит в дальнейшем обновлять проект "одной командой" в консоли.
Привязываем наш локальный Git-репозиторий к удаленному репозиторию через команду, которую можно найти в разделе "Конфигурация" проекта в amvera (формат git remote add amvera https://git.amvera.ru/ваш_юзернейм/ваш_проект)
Используя командную строку, перейдите в корневую папку проекта вашего приложения. Выполните указанные команды:
На запрос пользователя и пароля укажите имя пользователя и пароль вашей учетной записи Amvera.
Далее вводим
Пушим наш проект, выполняя команду
Либо, можно перетянуть файлы через интерфейс
Теперь надо указать финальную конфигурацию: выбрать версию Python и команду для запуска. Обратите внимание, в run надо указать название вашего запускаемого файла (у меня это main.py) либо команды (взаимоисключающие способы), /data - это постоянное хранилище. Наш проект будет работать через 80 порт.
Нажимаем завершить.
Если вы доставляете код через push в Git, не забудьте сделать git pull, так как задание конфигурации делает коммит с созданием конфигурационного yaml файла.
Теперь переходим в меню "Переменные" и добавляем переменную окружения, в которой у нас хранится TOKEN.
Проверяем работоспособность.
На что обратить внимание
- Если вы работаете через Git, и задали конфигурацию в интерфейсе, не забудьте сделать git pull, так-как задание конфигурации создает коммит.
- Сохраняйте важные файлы в /data, чтобы не потерять их при пересборке проекта. Для удобства тестирования создайте /data у себя на ПК.
- Если вы используете базу данных SQLite - ваш путь будет выглядеть примерно так - /data/sqlite_database.db
- Не стесняйтесь читать документацию и обращаться в поддержку в чате комьюнити. Вам обязательно помогут!
Теперь вы сможете спокойно выключать компьютер, не боясь остановки бота, Amvera всё сделает за нас.