Skip to content

alx-korvus/anon_talk_bot

Repository files navigation

Бот для анонимной связи собеседников

Запуск на локальной машине

Для запуска проекта локально достаточно выгрузить код, создать файл .env.dev рядом с .env.template и заполнить своими данными следующие переменные:

  • BOT_TOKEN=
  • OWNER_ID=
  • YOOKASSA_KEY_TEST=
  • PG_DB_NAME=
  • PG_USER=
  • PG_PASSWORD=
  • REDIS_PASSWORD=
  • REDIS_USER=
  • REDIS_USER_PASSWORD=

YOOKASSA_KEY_TEST - на сайте yookassa есть неплохая инструкция, как получать тестовый токен с помощью BotFather. Тестовый магазин в личном кабинете можно зарегистрировать без предоставления данных ИП. Для тестирования этого достаточно.

После присвоения значений переменных окружения проверьте, что в файле config.py включен режим разработки dev_mode: bool = True

Далее можно запускать проект в докере командой docker compose -f docker-compose.dev.yaml up -d

Бот работает!

Запуск тестов

  • Устанавливаем и активируем виртуальное окружение в корне проекта python3 -m venv venv && source ./venv/bin/activate && pip install --upgrade pip
  • Устанавливаем основные зависимости проекта pip install -r requirements.txt
  • Устанавливаем дополнительные зависимости pip install -r requirements_dev.txt
  • Запускаем тесты pytest tests/

Запуск на сервере

При деплое в дополнение к контейнерам bot, postgres, redis использую nginx, также в контейнере. Базовые конфиги представлены в директории nginx

В конфигах нужно заменить domain.ru на свой домен. Также в конфигах предусмотрено несколько поддоменов, а именно:

  • tg.domain.ru - для получения апдейтов с серверов телеграм
  • site.domain.ru - для отображения статической html
  • db.domain.ru - для подключения веб-админки к базе данных. Это приложение не представлено в данном репозитории
  • domain.ru - не используется, при необходимости можно настроить

Телеграм присылает обновления только на подписанные домены. Я использую сертификаты от letsencrypt, которые устанавливаю на файловой системе сервера и пробрасываю в контейнер nginx с помощью volume.

Непосредственно запуск приложения осуществляется командой docker compose -f docker-compose.prod.yaml up -d docker-compose.prod.yaml. Предварительно нужно создать файл с переменными окружения .env, куда внести уже все данные. Необязательно только YOOKASSA_KEY_PRODUCTION. Если эта переменная не заполнена, то при попытке оплатить подписку бот будет предупреждать пользователя, что в данный момент оплата невозможна.

После чего поднимаем nginx из его директории docker compose up -d

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages