Skip to content

Repository files navigation

🚰 Samal Telegram Bot

Telegram бот для быстрого заказа воды Samal с автоматическим оформлением заказов на сайте samal.kz.

📋 Описание

Этот бот упрощает процесс заказа воды, избавляя от необходимости каждый раз заходить на сайт, заполнять формы и добавлять товары в корзину. Просто нажмите кнопку в Telegram!

Возможности

  • 🚰 Быстрый заказ - повторный заказ одной кнопкой (2 клика!)
  • 📦 Новый заказ - полный выбор продукта и количества
  • 📝 Автоматическое сохранение данных пользователя (адрес, телефон)
  • 🚰 Выбор из всех доступных продуктов Samal
  • 📜 История заказов
  • 👤 Управление профилем
  • 💾 Минимальное использование ресурсов сервера

🚀 Быстрый старт

Локальная установка (для разработки)

# Клонируйте репозиторий
git clone https://github.com/tzhmbtv/SamalWaterOrderAutomation.git
cd SamalWaterOrderAutomation

# Создайте виртуальное окружение
python3 -m venv venv
source venv/bin/activate  # macOS/Linux
# или venv\Scripts\activate  # Windows

# Установите зависимости
pip install -r requirements.txt

# Создайте .env файл
cp env_example.txt .env
nano .env  # Добавьте ваш TELEGRAM_BOT_TOKEN

# Запустите бота
python bot.py

Production установка (на сервере)

См. подробную инструкцию в PRODUCTION_SETUP.md

Краткая версия:

# На сервере
git clone https://github.com/tzhmbtv/SamalWaterOrderAutomation.git
cd SamalWaterOrderAutomation
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Создайте .env с вашим токеном
nano .env

# Настройте systemd сервис (см. PRODUCTION_SETUP.md)

📱 Использование

Команды бота

При запуске бота вы увидите главное меню с кнопками:

После сохранения данных:

  • 🚰 Быстрый заказ - повторить последний заказ (2 клика!)
  • 📦 Новый заказ - выбрать другой продукт
  • 👤 Мой профиль - посмотреть сохраненные данные
  • 📜 История заказов - список всех заказов

Текстовые команды:

  • /start - Начало работы
  • /order - Сделать заказ
  • /profile - Профиль
  • /history - История
  • /cancel - Отменить действие

Процесс заказа

Первый заказ:

  1. Нажмите "📦 Новый заказ"
  2. Выберите продукт из списка
  3. Укажите количество
  4. Введите:
    • Имя
    • Телефон
    • Адрес доставки
    • Комментарий (опционально)
  5. Подтвердите заказ
  6. ✅ Данные сохранены!

Повторные заказы (БЫСТРО!):

  1. Нажмите "🚰 Быстрый заказ"
  2. Подтвердите заказ
  3. ✅ Готово! Всего 2 клика!

🛠 Структура проекта

SamalWaterOrderAutomation/
├── bot.py                    # Главный файл бота
├── config.py                 # Конфигурация (продукты, настройки)
├── database.py               # Работа с SQLite базой данных
├── samal_api.py             # API для работы с сайтом Samal
├── test_api.py              # Скрипт для тестирования API
├── requirements.txt          # Зависимости Python
├── env_example.txt          # Пример .env файла
├── .gitignore               # Игнорируемые файлы
├── PRODUCTION_SETUP.md      # Инструкция по установке на сервер
└── README.md                # Этот файл

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

Переменные окружения (.env)

# Обязательно
TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather

# Опционально (значения по умолчанию)
DEFAULT_PRODUCT_ID=224           # Вода Samal 18,9 л
DEFAULT_QUANTITY=2               # 2 бутыли
LOG_LEVEL=ERROR                  # ERROR | INFO | DEBUG

Уровни логирования

  • ERROR (рекомендуется для production) - только критичные ошибки, минимальное использование диска
  • INFO - основные события (для отладки)
  • DEBUG - максимально детально (только для разработки)

🚰 Доступные продукты

Бот поддерживает заказ всех продуктов Samal:

Продукт Цена Примечание
Вода Samal 18,9 л 1,700₸ Мин. заказ: 2 бутыли
Вода Samal 6 л 620₸ Мин. заказ: 2 бутыли
Вода Samal 2,0 л 325₸ Упаковка 6 ед.
Вода Samal 1,5 л 320₸ Упаковка 6 ед.
Вода Samal 1 л 275₸ Упаковка 6 ед.
Вода Samal 0,5 л 220₸ Упаковка 12 ед.

📊 База данных

Бот использует SQLite для хранения:

  • Пользователи: chat_id, телефон, адрес, имя, комментарий
  • Заказы: история с датами и статусами

База создается автоматически при первом запуске.

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

Для тестирования API без реальных заказов:

python test_api.py

Скрипт проверит:

  • ✅ Добавление товара в корзину
  • ✅ Получение страницы checkout
  • ✅ Извлечение nonce
  • ✅ Формирование данных заказа
  • ✅ Cookies и сессии

🔧 Технологии

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

  • ✅ Пароли и токены хранятся в .env (не в git)
  • ✅ База данных локальная (SQLite)
  • ✅ Минимальное логирование в production
  • ✅ Рекомендуется запуск от отдельного пользователя (не root)

📈 Производительность

Оптимизировано для серверов с ограниченными ресурсами:

  • 💾 Минимальное использование диска (логирование только ошибок)
  • 🚀 Малое потребление RAM (~50-100 MB)
  • ⚡ Быстрые ответы (polling)
  • 🔄 Автоматический перезапуск при сбоях

⚠️ Важные примечания

  • ✅ Доставка осуществляется только по г. Алматы
  • ✅ Для воды 18,9 л необходима обменная тара
  • ✅ Минимальный заказ обычно 2 единицы/упаковки
  • ✅ С вами свяжется оператор для подтверждения

🐛 Решение проблем

Бот не запускается

  1. Проверьте токен в .env
  2. Убедитесь что установлены зависимости: pip install -r requirements.txt
  3. Проверьте логи: tail -f /var/log/samalbot_error.log (на сервере)

Заказ не оформляется

  1. Проверьте интернет-соединение
  2. Убедитесь что сайт samal.kz доступен
  3. Включите расширенное логирование (LOG_LEVEL=INFO) для отладки

Мало места на диске

  1. Проверьте что LOG_LEVEL=ERROR в .env
  2. Очистите старые логи: journalctl --vacuum-time=3d
  3. См. раздел в PRODUCTION_SETUP.md об очистке системы

📞 Поддержка

По всем вопросам:

📄 Лицензия

Этот проект создан для упрощения заказа воды Samal.


Приятного использования! 💙🚰

About

Order water using python and web requests

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages