Skip to content

Repository files navigation

🚂 Telegram Бот для мониторинга мест РЖД

Бот для поиска и мониторинга свободных мест на поездах РЖД с удобным интерфейсом и автоматическими уведомлениями.

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

  • 🔍 Поиск поездов по маршруту и дате
  • 🛏️ Выбор типа места (плацкарт, купе, СВ)
  • ⬆️⬇️ Выбор полки для купе (верхняя/нижняя)
  • 🔔 Автоматические уведомления о найденных местах
  • 📊 История мониторинга и статистика
  • 💾 База данных для хранения подписок
  • 🎯 Удобный интерфейс с inline-кнопками

🚀 Установка и запуск

🐳 Запуск через Docker (Рекомендуется)

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

git clone <repository-url>
cd rzd

2. Настройка переменных окружения

cp env.example .env
nano .env  # Отредактируйте файл и установите токен бота

3. Получение токена бота

  1. Найдите @BotFather в Telegram
  2. Отправьте команду /newbot
  3. Следуйте инструкциям для создания бота
  4. Скопируйте полученный токен в файл .env

4. Запуск бота

docker-compose up -d

5. Остановка бота

docker-compose stop

💻 Запуск без Docker

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

git clone <repository-url>
cd rzd

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

pip install -r requirements.txt

3. Настройка переменных окружения

export TELEGRAM_BOT_TOKEN="your_bot_token_here"

4. Получение токена бота

  1. Найдите @BotFather в Telegram
  2. Отправьте команду /newbot
  3. Следуйте инструкциям для создания бота
  4. Скопируйте полученный токен

5. Запуск бота

python run_bot.py

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

Основные команды

  • /start - начать работу с ботом
  • /help - справка по использованию
  • /my_subscriptions - просмотр активных подписок

Сценарий использования

  1. Ввод маршрута: Укажите станцию отправления и прибытия
  2. Выбор даты: Введите дату поездки в формате ДД.ММ.ГГГГ
  3. Выбор поезда: Выберите поезд из найденных вариантов
  4. Настройка мониторинга: Выберите тип места и полку (для купе)
  5. Получение уведомлений: Бот автоматически уведомит о найденных местах

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

rzd/
├── main.py              # Основной файл бота
├── rzd_parser.py        # Парсер данных с сайта РЖД
├── database.py          # Работа с базой данных
├── monitoring.py        # Сервис мониторинга
├── run_bot.py          # Скрипт запуска
├── requirements.txt     # Зависимости Python
├── Dockerfile          # Docker образ
├── docker-compose.yml  # Docker Compose конфигурация
├── env.example         # Пример переменных окружения
├── .dockerignore       # Исключения для Docker
├── README.md           # Документация
├── QUICK_START.md      # Быстрый старт
└── data/               # Данные (создается автоматически)
    └── rzd_bot.db      # База данных SQLite

🔧 Настройка

Docker настройки

Все настройки можно изменить в файле .env:

# Основные настройки
TELEGRAM_BOT_TOKEN=your_bot_token_here
MONITORING_INTERVAL=300  # Интервал проверки в секундах
LOG_LEVEL=INFO          # Уровень логирования

# Дополнительные настройки
MAX_RETRIES=3           # Количество попыток при ошибке
RETRY_DELAY=60         # Задержка между попытками

Интервал мониторинга

По умолчанию бот проверяет доступность мест каждые 5 минут. Для изменения интервала отредактируйте MONITORING_INTERVAL в файле .env.

База данных

Бот использует SQLite для хранения данных. База данных создается автоматически при первом запуске и сохраняется в папке data/.

Логирование

Логи сохраняются в папку logs/ и выводятся в консоль. Для изменения уровня логирования отредактируйте LOG_LEVEL в файле .env.

Docker команды

# Просмотр логов
docker-compose logs -f rzd-bot

# Перезапуск бота
docker-compose restart rzd-bot

# Обновление образа
docker-compose pull && docker-compose up -d

# Полная остановка с удалением данных
docker-compose down -v

📊 База данных

Таблицы

  • users - информация о пользователях
  • subscriptions - подписки на мониторинг
  • notifications - история уведомлений
  • check_history - история проверок доступности

🛠️ Разработка

Добавление новых функций

  1. Создайте новый модуль или расширьте существующий
  2. Добавьте обработчики в main.py
  3. Обновите базу данных при необходимости
  4. Протестируйте функциональность

Отладка

Для отладки включите подробное логирование:

logging.basicConfig(level=logging.DEBUG)

⚠️ Ограничения

  • Парсинг данных зависит от структуры сайта РЖД
  • При изменении сайта может потребоваться обновление парсера
  • Интервал проверки ограничен для избежания блокировки
  • Требуется стабильное интернет-соединение

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

  • Токен бота хранится в переменных окружения
  • Данные пользователей шифруются в базе данных
  • Ограничена частота запросов к сайту РЖД

📝 Лицензия

Этот проект создан в образовательных целях. Используйте ответственно и в соответствии с правилами сайта РЖД.

🤝 Поддержка

При возникновении проблем:

  1. Проверьте логи бота
  2. Убедитесь в правильности токена
  3. Проверьте подключение к интернету
  4. Создайте issue в репозитории

🔄 Обновления

Для обновления бота:

  1. Остановите текущий процесс
  2. Обновите код
  3. Установите новые зависимости (если есть)
  4. Перезапустите бота

Удачного использования! 🚂✨

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages