Интерактивный 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)
- Клонируйте репозиторий:
git clone https://github.com/your-username/turki.git
cd turki- Сгенерируйте Gradle Wrapper (если отсутствует):
gradle wrapper --gradle-version 8.10- Создайте файл
.env:
cp env.example .env
# Отредактируйте .env и добавьте BOT_TOKEN- Запустите бота:
./gradlew :bot:run# Создайте .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:
- Merhaba! - Приветствие и знакомство
- Neredesin? - Местоположение и числа
- 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 |
Архитектура позволяет легко добавлять новые языки:
- Добавьте новый язык в
Language.kt:
enum class Language(val code: String, val displayName: String) {
TURKISH("tr", "Türkçe"),
ENGLISH("en", "English"),
SPANISH("es", "Español"), // Новый язык
// ...
}-
Создайте уроки с
targetLanguage = Language.SPANISH -
Бот автоматически покажет уроки на выбранном языке
| Endpoint | Метод | Описание |
|---|---|---|
/health |
GET | Проверка работоспособности |
/api/stats |
GET | Статистика (пользователи, уроки) |
# Сборка всего проекта
./gradlew build
# Запуск линтера
./gradlew detekt
# Сборка JAR для бота
./gradlew :bot:jar
# Сборка дистрибутива админки
./gradlew :admin:packageMIT License - см. LICENSE
- İstanbul Yabancılar İçin Türkçe - материалы для уроков
- tgbotapi - Kotlin библиотека для Telegram
- JetBrains - Compose Multiplatform