Skip to content

Vardges13/travel-ai-bot

Repository files navigation

✈️ Онлайн Тур Плюс — Telegram-бот ИИ-ассистент

Python aiogram OpenAI Docker License: MIT

ИИ-ассистент турагентства — подбор туров, консультации, бронирование через Telegram

ВозможностиБыстрый стартСтруктураСкриншоты


🎯 О проекте

Telegram-бот для турагентства «Онлайн Тур Плюс» с ИИ-подбором туров на базе GPT-4. Клиент описывает пожелания — бот анализирует запрос и предлагает подходящие варианты отдыха с учётом бюджета, дат, количества путешественников и предпочтений.

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

Функция Описание
🗺 Чат с ИИ Клиент описывает пожелания (страна, даты, бюджет, кол-во людей) — ИИ подбирает варианты
📋 Каталог направлений Турция, Египет, Таиланд, ОАЭ, Мальдивы с описаниями и ценами
📝 Сбор заявок Имя, телефон, email, пожелания → сохранение в БД + уведомление админу
FAQ Визы, страховка, документы, оплата, отмена туров
🔐 Админ-панель /admin — просмотр заявок и статистика
💬 Контекст разговора Хранение истории чата (до 20 сообщений на пользователя)
🐳 Docker Готовый Dockerfile + docker-compose.yml для деплоя

🛠 Стек технологий

  • Python 3.12 — язык разработки
  • aiogram 3.x — асинхронный фреймворк для Telegram Bot API
  • OpenAI API (GPT-4) — генерация ответов ИИ
  • SQLAlchemy 2.0 + aiosqlite — асинхронная работа с SQLite
  • Docker — контейнеризация

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

travel-ai-bot/
├── bot/
│   ├── __init__.py
│   └── __main__.py            # Точка входа
├── handlers/
│   ├── __init__.py             # Регистрация роутеров
│   ├── start.py                # /start, навигация
│   ├── chat.py                 # Чат с ИИ
│   ├── catalog.py              # Каталог направлений
│   ├── faq.py                  # Частые вопросы
│   ├── lead.py                 # Сбор заявок (FSM)
│   └── admin.py                # Админ-панель
├── keyboards/
│   ├── __init__.py
│   ├── reply.py                # Reply-клавиатура меню
│   └── inline.py               # Inline-клавиатуры
├── services/
│   ├── __init__.py
│   ├── database.py             # Работа с БД
│   └── openai_service.py       # Интеграция с OpenAI
├── models/
│   ├── __init__.py
│   ├── base.py                 # Базовая модель
│   ├── user.py                 # Пользователи
│   ├── conversation.py         # История разговоров
│   ├── lead.py                 # Заявки
│   └── popular_tour.py         # Популярные направления
├── config.py                   # Конфигурация из .env
├── .env.example                # Пример переменных окружения
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── LICENSE
└── README.md

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

Предварительные требования

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

git clone https://github.com/Vardges13/travel-ai-bot.git
cd travel-ai-bot

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

cp .env.example .env

Заполните .env:

Переменная Описание Пример
BOT_TOKEN Токен Telegram-бота от @BotFather 123456:ABC-DEF...
OPENAI_API_KEY API-ключ OpenAI sk-...
ADMIN_IDS ID администраторов через запятую 123456789,987654321
OPENAI_MODEL Модель OpenAI (по умолчанию gpt-4) gpt-4
MAX_HISTORY Макс. сообщений в контексте 20

3a. Запуск через Docker (рекомендуется)

docker compose up -d --build

Логи:

docker compose logs -f bot

3b. Запуск локально

python -m venv .venv
source .venv/bin/activate   # Linux/macOS
# .venv\Scripts\activate    # Windows

pip install -r requirements.txt
python -m bot

🤖 Команды бота

Команда Описание
/start Приветствие и главное меню
/admin Админ-панель (только для админов)

🗄 База данных

SQLite-файл автоматически создаётся в data/bot.db при первом запуске.

Таблица Описание
users Пользователи Telegram
conversations История сообщений с ИИ
leads Заявки клиентов
popular_tours Каталог популярных направлений (seed-данные)

📸 Скриншоты

Главное меню Подбор тура Каталог
Главное меню Подбор тура Каталог

💡 Для добавления скриншотов создайте директорию docs/screenshots/ и добавьте изображения.

🔑 Получение токенов

Telegram Bot Token
  1. Откройте @BotFather в Telegram
  2. Отправьте /newbot и следуйте инструкциям
  3. Скопируйте токен в .env
OpenAI API Key
  1. Зарегистрируйтесь на platform.openai.com
  2. Создайте API-ключ в разделе API Keys
  3. Скопируйте ключ в .env
Admin ID
  1. Откройте @userinfobot в Telegram
  2. Отправьте любое сообщение — бот вернёт ваш ID
  3. Укажите ID в ADMIN_IDS

📄 Лицензия

Проект распространяется под лицензией MIT.


Сделано с ❤️ для турагентства «Онлайн Тур Плюс»

About

✈️ ИИ-ассистент турагентства — подбор туров, консультации, бронирование через Telegram

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages