Skip to content

serebrium/Shop-bot

Repository files navigation

🛒 Shop-bot

Telegram бот для интернет-магазина с полным функционалом управления товарами, корзиной, заказами и кошельком.

Полная дорожная карта развития проекта см. в файле ROADMAP.md.

🚀 Возможности

Для пользователей

  • 📱 Каталог товаров - просмотр категорий и товаров
  • 🛒 Корзина - добавление, удаление, изменение количества
  • 💳 Кошелек - пополнение баланса и оплата заказов
  • 📦 Заказы - оформление и отслеживание статуса доставки
  • Поддержка - задать вопрос администратору

Для администраторов

  • Управление товарами - добавление, редактирование, удаление
  • 📊 Заказы - просмотр и обработка заказов
  • 💬 Вопросы - ответы на вопросы пользователей
  • 📈 Статистика - мониторинг продаж

🏗️ Архитектура

Shop-bot/
├── app.py              # Главный файл приложения
├── loader.py           # Загрузчик компонентов  
├── data/               # Конфигурация и данные
├── handlers/           # Обработчики команд
├── keyboards/          # Клавиатуры и разметки
├── states/             # Состояния FSM
├── utils/              # Утилиты и база данных
└── scripts/            # Скрипты безопасности

🔒 Безопасность

Проект прошел полную проверку безопасности:

Jinja2 уязвимости - не применимо (Jinja2 не используется)
str.format уязвимости - не обнаружено
Зависимости - все обновлены до безопасных версий
Код - проверен на потенциальные проблемы (см. ROADMAP.md для запланированных исправлений)

Проверка безопасности

# Автоматическая проверка
python scripts/security_check.py

# Ручная проверка зависимостей
pip list --outdated

Подробности в SECURITY.md

🛠️ Технологии

  • Python 3.9.19 (зафиксировано) - основной язык
  • aiogram 2.9.2 - Telegram Bot API фреймворк
  • SQLite - база данных
  • Redis - кэширование (опционально)
  • pytest - тестирование

🔐 Безопасность и архитектура (aiogram 3.x)

  • Администраторы задаются только через переменную окружения ADMINS (кортеж ID); возможность переключать режимы в интерфейсе удалена.
  • Все SQL-запросы параметризованы.
  • Валидация пользовательского ввода вынесена в utils/validators.py.
  • Включена защита от флуда через middlewares/antiflood.py (по умолчанию 0.5с между сообщениями от пользователя).

🖼️ Хранение изображений

  • Изображения товаров сохраняются в data/images/ (путь хранится в БД в поле products.photo_path).
  • Директория data/images/ добавлена в .gitignore и не коммитится.

📦 Установка

1. Клонирование репозитория

git clone https://github.com/serebrium/Shop-bot.git
cd Shop-bot

Примечание: проект фиксирован на Python 3.9.19. При необходимости установите и активируйте через pyenv:

pyenv install 3.9.19
pyenv local 3.9.19

2. Создание виртуального окружения

python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# или
venv\Scripts\activate     # Windows

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка конфигурации

cp env.example .env
# Отредактируйте .env файл

5. Запуск

python app.py

⚙️ Конфигурация

Создайте файл .env со следующими параметрами:

BOT_TOKEN=ваш_токен_бота
ADMINS=123456789,987654321
PROJECT_NAME=shop-bot

🧪 Тестирование

# Запуск всех тестов
pytest

# Запуск с подробным выводом
pytest -v

# Запуск конкретного теста
pytest tests/test_database.py

📊 База данных

Автоматически создаются таблицы:

  • categories - категории товаров
  • products - товары
  • cart - корзина пользователей
  • orders - заказы
  • wallet - кошельки пользователей
  • questions - вопросы пользователей

🚀 Развертывание

Docker

docker-compose up -d

Heroku/Railway

  • Установите переменные окружения
  • Настройте webhook
  • Деплой автоматический

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Создайте Pull Request

📝 Лицензия

MIT License - см. LICENSE

🆘 Поддержка

🔄 Обновления

  • v1.0.0 - Базовая функциональность
  • v1.1.0 - Улучшения безопасности
  • v1.2.0 - Новые функции (планируется)

Если проект полезен, поставьте звезду!

About

Telegram бот для интернет-магазина

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors