-
3.1. Настройка poetry
3.2. Настройка pre-commit
-
4.2. Запуск в Docker
Проект телеграм-бота, который позволяет экспертам оперативно получать информацию о заявках и их статусе, а также другую интересующую информацию в рамках проекта “Просто спросить”.
Бот общается с сайтом через API.
Информация о событиях (таких, как назначение новой заявки, получение сообщения от клиента) отправляется от API сайта боту через Webhook.
По расписанию, настроенному через переменные окружения, бот запрашивает через API и отправляет в чат пользователю сводную информацию по заявкам (стастистику за неделю/месяц, список открытых заявок), напоминает о текущих заявках, находящихся в работе, о том, что срок ответа на заявку подходит к концу и уже пришла пора над ней поработать. Эта же информация также доступна по запросу через меню бота.
Бот позволяет настроить часовой пояс для того, чтобы уведомления приходили в удобное для пользователя время.
Имя | Описание |
---|---|
docs | Содержит диаграмму архитктуры проекта в разных форматах |
infrastructure | Docker-compose файл для запуска проекта с помощью Docker |
src | к описанию этой папки стоит вернутся когда рефакторинг закончим |
Примечение: использование Poetry и pre-commit при работе над проектом обязательно.
Poetry - это инструмент для управления зависимостями и виртуальными окружениями, также может использоваться для сборки пакетов. В этом проекте Poetry необходим для дальнейшей разработки приложения, его установка обязательна.
Как скачать и установить?
Установите poetry следуя инструкции с официального сайта.
Команды для установки:
Для UNIX-систем и Bash on Windows вводим в консоль следующую команду:curl -sSL https://install.python-poetry.org | python -
Для WINDOWS PowerShell:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
После установки перезапустите оболочку и введите команду
poetry --version
Если установка прошла успешно, вы получите ответ в формате
Poetry (version 1.2.0)
Для дальнейшей работы введите команду:
poetry config virtualenvs.in-project true
Выполнение данной команды необходимо для создания виртуального окружения в папке проекта.
После предыдущей команды создадим виртуальное окружение нашего проекта с помощью команды:
poetry install
Результатом выполнения команды станет создание в корне проекта папки .venv. Зависимости для создания окружения берутся из файлов poetry.lock (приоритетнее) и pyproject.toml
Для добавления новой зависимости в окружение необходимо выполнить команду
poetry add <package_name>
Пример использования:
poetry add starlette
Также poetry позволяет разделять зависимости необходимые для разработки, от основных. Для добавления зависимости необходимой для разработки и тестирования необходимо добавить флаг --dev
poetry add <package_name> --dev
Пример использования:
poetry add pytest --dev
Порядок работы после настройки
Чтобы активировать виртуальное окружение, введите команду:
poetry shell
Существует возможность запуска скриптов и команд с помощью команды без активации окружения:
poetry run <script_name>.py
Примеры:
poetry run python script_name>.py
poetry run pytest
poetry run black
Порядок работы в оболочке не меняется. Пример команды для Win:
python src\run_bot.py
Доступен стандартный метод работы с активацией окружения в терминале с помощью команд:
Для WINDOWS:
source .venv/Scripts/activate
Для UNIX:
source .venv/bin/activate
Настройка pre-commit
pre-commit install
Далее при каждом коммите у вас будет происходить автоматическая проверка линтером, а так же будет происходить автоматическое приведение к единому стилю.
Перед запуском проекта необходимо создать копию файла
.env.example
, назвав его .env
и установить значение токена бота
Запуск проекта локально
python src/run_bot.py
Отладка приложения с ботом в режиме webhook на локальном компьютере требует выполнения дополнительных действий:
Необходимые действия
В случае отсутствия сервера с доменным именем и установленным SSL-сертификатом, для отладки приложения можно воспользоваться ngrok для построения туннеля до вашего компьютера.
Для этого необходимо:
- Скачать и установить ngrok
- Зарегистрироваться в сервисе ngrok и получить токен
- Зарегистрировать полученный токен на локальном комьютере
ngrok config add-authtoken <ваш токен>
- Запустить тоннель ngrok
ngrok http 8000 --host-header=site.local
- Скопировать из консоли адрес (
https
), предоставленный сервисомngrok
, в переменную окруженияAPPLICATION_URL
:
APPLICATION_URL=https://1234-56-78-9.eu.ngrok.io # пример
- Запустить приложение с ботом в режиме webhook (см. выше)
python src/run_webhook_api.py
Более подробная информация об использовании сервиса ngrok доступна на официальном сайте
python src/run_webhook_api.py
Запуск проекта через Docker
Можно запустить бота через docker-compose в тестовом режиме. Для этого в корневой папке проекта выполнить команду
docker-compose up -d --build