Skip to content

Agrassx/Turki

Repository files navigation

🇹🇷 Turki - Telegram Bot для изучения турецкого языка

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

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

  • 📚 Интерактивные уроки турецкого языка уровня A1
  • 📝 Домашние задания с проверкой ответов
  • 📖 Словарь к каждому уроку с произношением
  • Напоминания о занятиях
  • 📊 Отслеживание прогресса
  • 👥 Админ-панель для управления пользователями и подписками

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

  • Kotlin - основной язык разработки
  • Ktor - HTTP сервер
  • Telegram Bot API (tgbotapi) - взаимодействие с Telegram
  • Compose Multiplatform - десктопная админ-панель
  • Exposed - ORM для работы с SQLite
  • Koin - Dependency Injection
  • Docker - контейнеризация

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

turki/
├── core/           # Общие модели, репозитории, БД
├── bot/            # Telegram бот на Ktor
├── admin/          # Десктопная админка на Compose
├── config/         # Конфигурация (detekt)
├── gradle/         # Gradle wrapper и version catalog
├── docker-compose.yml
├── Dockerfile
└── README.md

🏃 Быстрый старт

Требования

  • JDK 21+
  • Docker и Docker Compose (для контейнеризации)
  • Telegram Bot Token (получить у @BotFather)

Локальный запуск

  1. Клонируйте репозиторий:
git clone https://github.com/your-username/turki.git
cd turki
  1. Сгенерируйте Gradle Wrapper (если отсутствует):
gradle wrapper --gradle-version 8.10
  1. Создайте файл .env:
cp env.example .env
# Отредактируйте .env и добавьте BOT_TOKEN
  1. Запустите бота:
./gradlew :bot:run

Запуск через Docker

# Создайте .env файл с BOT_TOKEN
cp .env.example .env
nano .env  # Добавьте ваш токен

# Запустите через Docker Compose
docker-compose up -d

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

Запуск админ-панели

./gradlew :admin:run

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

Команда Описание
/start Начать работу с ботом
/lesson Текущий урок
/homework Домашнее задание
/vocabulary Словарь текущего урока
/progress Ваш прогресс
/help Справка

📚 Уроки

В текущей версии доступны 3 урока уровня A1:

  1. Merhaba! - Приветствие и знакомство
  2. Neredesin? - Местоположение и числа
  3. Ne yapıyorsun? - Настоящее время и распорядок дня

Уроки основаны на материалах учебника "İstanbul A1".

🔧 Конфигурация

Переменные окружения

Переменная Описание По умолчанию
BOT_TOKEN Токен Telegram бота - (обязательно)
DB_URL JDBC URL для Postgres jdbc:postgresql://localhost:5432/turki
DB_USER Пользователь Postgres turki
DB_PASSWORD Пароль Postgres turki
PORT Порт HTTP сервера 8080

🌍 Добавление новых языков

Архитектура позволяет легко добавлять новые языки:

  1. Добавьте новый язык в Language.kt:
enum class Language(val code: String, val displayName: String) {
    TURKISH("tr", "Türkçe"),
    ENGLISH("en", "English"),
    SPANISH("es", "Español"), // Новый язык
    // ...
}
  1. Создайте уроки с targetLanguage = Language.SPANISH

  2. Бот автоматически покажет уроки на выбранном языке

📋 API Endpoints

Endpoint Метод Описание
/health GET Проверка работоспособности
/api/stats GET Статистика (пользователи, уроки)

🧪 Разработка

# Сборка всего проекта
./gradlew build

# Запуск линтера
./gradlew detekt

# Сборка JAR для бота
./gradlew :bot:jar

# Сборка дистрибутива админки
./gradlew :admin:package

📄 Лицензия

MIT License - см. LICENSE

🙏 Благодарности

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors