Skip to content

Studio-Yandex-Practicum/coliving_bot

Repository files navigation

Telegram-Бот Коливингов

Описание проекта

Используемый стек

Python Django DRF Python-telegram-bot Postgres Nginx

Архитектура проекта

Директория Описание
infra Файлы для запуска с помощью Docker, настройки Nginx
src/backend Код Django приложения
src/bot Код бота

Подготовка

Требования

  1. Python 3.12
    Убедитесь, что у вас установлена нужная версия Python или активирована в pyenv.

  2. Poetry
    Зависимости и пакеты управляются через poetry. Убедитесь, что poetry установлен на вашем компьютере и ознакомьтесь с документацией.
    Установка зависимостей

    poetry install
    

    Также будет создано виртуальное окружение, если привычнее видеть его в директории проекта, то используйте настройку virtualenvs.in-project

  3. Docker

  4. Токен Telegram бота
    Документация
    Перед запуском нужно получить token у бота @BotFather. После того как бот будет зарегистрирован - вам выдадут token, его нужно добавить в файл .env, строку TOKEN=. В документе env.example она обозначена комментарием.
    Про более подробное создание бота читать в приложенной документации.

  5. Файлы requirements
    Файлы редактировать вручную не нужно. Обновляются через pre-commit хуки (если есть изменение в зависимостях, то список обновится при коммите).

  6. pre-commit
    Документация
    Обязательно выполните команду:

    pre-commit install

    При каждом коммите будут выполняться хуки (автоматизации) перечисленные в .pre-commit-config.yaml. Если не понятно какая ошибка мешает сделать коммит можно запустить хуки вручную и посмотреть ошибки:

    pre-commit run --all-files

Стиль кода

Придерживаемся black style

Ветки Git

  1. Создавая новую ветку, наследуйтесь от ветки develop, подхватывайте перед этим последние изменения

  2. Правила именования веток

    • весь новый функционал — feature/название-функционала
    • исправление ошибок — fix/название-багфикса
      Пример:
    feature/burger-menu
    fix/bun-issue
    
  3. 1 ветка - 1 задача

Разворачиваем проект в контейнерах

  1. Создаём .env файл в корневой директории проекта и заполняем его по образцу .env.example

  2. Переходим в директорию infra/

    cd infra/
  3. Поднимаем контейнеры

    docker compose --env-file ../.env -f docker-compose.local.yml up -d
  4. При первом запуске можно создать записи в БД о городах командой

    docker exec backend python manage.py import_locations

Администрирование развёрнутого приложения

Создание суперпользователя

Используйте команду ниже и следуйте инструкциям в терминале

docker exec -it backend python manage.py createsuperuser

Разворачиваем проект локально

  1. Устанавливаем зависимости

  2. Создаём .env файл в корневой директории проекта и заполняем его по образцу .env.example

  3. Переходим в директорию src/backend/

    cd src/backend/
  4. Применяем миграции

    python manage.py migrate
  5. Загружаем фикстуры (локации)

    python manage.py import_locations
  6. Запускаем development-сервер Django

    python manage.py runserver

Note
Есть возможность изменить используемый файл настроек, определив переменную DJANGO_SETTINGS_MODULE, например,

export DJANGO_SETTINGS_MODULE=coliving_bot.settings.stage

Запускаем бота

Перед выполнением команд откройте новый терминал (не забываем добавить token бота в файл .env, строку TOKEN=)

cd src/bot/
python run_bot.py