Skip to content

Repository files navigation

🎓 Telegram-бот для Кейс-клуба

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

📋 Функционал

Для учеников:

  • ✅ Запись на занятия (выбор темы и даты)
  • 💳 Оплата занятий через Telegram Payments
  • 📋 Просмотр своих записей
  • ❌ Отмена записи
  • 📁 Получение материалов до и после занятия
  • 💬 Связь с поддержкой
  • 🔔 Уведомления о новых занятиях (с возможностью отключить)

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

  • 📚 Создание и редактирование занятий
  • 👥 Управление количеством мест
  • 📁 Загрузка материалов
  • 📊 Просмотр записей и оплат
  • 📢 Рассылка сообщений участникам
  • 📈 Статистика

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

1. Клонирование и настройка окружения

# Создайте виртуальное окружение
python -m venv venv

# Активируйте его (Windows)
venv\Scripts\activate

# Активируйте его (Linux/Mac)
source venv/bin/activate

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

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

Создайте файл .env на основе .env.example:

cp .env.example .env

Отредактируйте .env:

# Telegram Bot Token (получите у @BotFather)
BOT_TOKEN=your_bot_token_here

# ID администраторов (через запятую)
ADMIN_IDS=123456789,987654321

# База данных
DATABASE_URL=sqlite+aiosqlite:///./case_club.db

# Платежная система (опционально)
PAYMENT_PROVIDER_TOKEN=your_payment_token_here

# Настройки бота
BOT_USERNAME=your_bot_username
SUPPORT_USERNAME=support_username

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

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

4. Настройка платежной системы (опционально)

Для приема платежей через Telegram:

  1. Напишите @BotFather
  2. Выберите вашего бота
  3. Перейдите в Payments
  4. Выберите провайдера (ЮKassa, Stripe и др.)
  5. Получите PAYMENT_PROVIDER_TOKEN

Без платежного токена бот работает в демо-режиме — записи подтверждаются автоматически.

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

python bot.py

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

advandcedbot/
├── bot.py                 # Главный файл запуска
├── config.py              # Конфигурация
├── requirements.txt       # Зависимости
├── .env.example           # Пример переменных окружения
├── README.md              # Документация
│
├── database/
│   ├── __init__.py
│   ├── base.py            # Подключение к БД
│   ├── models.py          # Модели данных
│   └── repositories.py    # Репозитории для работы с БД
│
├── handlers/
│   ├── __init__.py
│   ├── user_handlers.py   # Обработчики для учеников
│   ├── admin_handlers.py  # Обработчики для админов
│   └── payment_handlers.py # Обработка платежей
│
├── keyboards/
│   ├── __init__.py
│   ├── user_keyboards.py  # Клавиатуры для учеников
│   └── admin_keyboards.py # Клавиатуры для админов
│
└── services/
    ├── __init__.py
    ├── notifications.py   # Сервис уведомлений
    └── scheduler.py       # Планировщик задач

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

Команды для пользователей:

  • /start — Начать работу с ботом

Команды для администраторов:

  • /admin — Открыть панель администратора

Меню ученика:

  • 📚 Записаться на занятие — выбор темы и даты
  • 📋 Мои записи — просмотр и управление записями
  • 📁 Материалы — доступ к учебным материалам
  • 💬 Поддержка — связь с администрацией
  • ⚙️ Настройки — уведомления и контакты

Панель администратора:

  • 📚 Управление занятиями — создание, редактирование, удаление
  • 👥 Участники — список всех пользователей
  • 📁 Материалы — загрузка файлов к занятиям
  • 💰 Оплаты — просмотр платежей
  • 📢 Рассылка — отправка сообщений
  • 📊 Статистика — общая аналитика

🔧 Настройка платежных систем

ЮKassa (Россия)

  1. Зарегистрируйтесь на yookassa.ru
  2. Подключите магазин
  3. В BotFather выберите ЮKassa как провайдера
  4. Получите токен и добавьте в .env

Stripe (Международные)

  1. Зарегистрируйтесь на stripe.com
  2. Получите API ключи
  3. В BotFather выберите Stripe
  4. Настройте интеграцию

📱 Интеграция с Tilda

Для перенаправления пользователей с лендинга на Tilda:

  1. Создайте кнопку/ссылку на Tilda
  2. Укажите URL: https://t.me/ваш_бот_username
  3. Или с параметром: https://t.me/ваш_бот_username?start=from_tilda

🔔 Автоматические уведомления

Бот автоматически отправляет:

  • ⏰ Напоминание за 24 часа до занятия
  • ⏰ Напоминание за 1 час до занятия
  • ✅ Подтверждение записи
  • 📁 Уведомление о новых материалах
  • 📢 Анонсы новых занятий

🛡️ Безопасность

  • Токены хранятся в .env (не коммитьте в Git!)
  • Проверка прав администратора
  • Валидация платежей
  • Защита от дублирования записей

📈 Масштабирование

Для продакшн-среды рекомендуется:

  1. PostgreSQL вместо SQLite:

    DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
  2. Redis для FSM storage:

    from aiogram.fsm.storage.redis import RedisStorage
    storage = RedisStorage.from_url("redis://localhost:6379")
  3. Webhook вместо polling для высокой нагрузки

🐛 Отладка

Включите debug-логирование:

logging.basicConfig(level=logging.DEBUG)

📞 Поддержка

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

  1. Проверьте правильность токена бота
  2. Убедитесь, что ADMIN_IDS указан корректно
  3. Проверьте логи запуска

Разработано с ❤️ для кейс-клуба

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages