Skip to content

Java Telegram Bot help users learn foreign languages 🤖

Notifications You must be signed in to change notification settings

neblessed/dictionary_telegram_bot

Repository files navigation

🌎 Телеграм бот для изучения английских слов

Данный бот призван помочь в изучениии новых английских слов. Пользователю предлагается подборка слов для изучения, а так же возможность запуска экзамена по выданной ранее подборке слов.

Возможности бота:

image

1. Выдача слов по кнопке "Изучить слова 📚"

Бот обрабатывает файл words.txt и присылает то количество слов, которое установлено пользователем (см. пункт 2). Налажено общение с Google Translate API, который обрабатывает поступающие слова из файла и парсит их в коллекцию с переводами.

После выдачи слов пользователю - они помещаются в .csv-файл в формате "слово, перевод" для дальнейшей выдачи через кнопку "Запустить тестирование" (см. пункт 3). image

image

2. Прохождение итогового тестирования по кнопке "Запустить тестирование 🍀"

Бот взаимодействует с ранее описанным .csv-файлом для выдачи для проверки именно тех слов, которые ранее выдавались пользователю.

Сообщение приходит в таком формате: Английское слово и 4 кнопки (слова переводы, один из которых верный). Сверка правильного ответа происходит благодаря подставляемому в кнопку-перевод callbackData, что позволяет динамично проверять ответы пользователя на правильность.

image

  • Если пользователь отвечает не правильно, то бот присылает сообщение "Не правильный ответ"
  • Если пользователь отвечает верно, то данная пара (слово-перевод) удаляется из файла и в при последующем экзаменее не предлагается.

При прохождении тестирования пользователю доступна кнопка "Завершить тестирование досрочно 🏃‍♂️", она позволяет прервать тестирования и зафиксировать текущий прогресс.

После прохождения тестирования пользователю предоставляется статистика:

image

3. Раздел "Мои настройки ⚙️"

image

В данном разделе пользователю предлагается изменить дневной лимит слов и обнулить свой прогресс.

3.1. Установка дневного лимита слов по кнопке "Дневной лимит слов 📈"

После нажатия на кнопку пользователю присылается сообщение с прикрепленными кнопками: image

При выборе любого лимита через нажатие, боту приходит информация о callbackData (id нажатой кнопки), которую бот обрабатывает следующим образом: В существующем файле (user_limits/limits.csv) считывает всё содержимое в коллекцию типа List<String[]>, и проходится по каждой записи, сверяя chatId и новый лимит. Если записи нет - записывает её, если запись есть и новый установленный лимит соответствует уже записанному - возвращает этот лимит, а если запись имеется, но записанный лимит и устанавливаемый - не соответствуют друг другу, то обновляет запись.

image

После успешной установки лимита - пользователю приходит ответ от бота: "Новый лимит установлен ✅"

3.2. Очистка коллекции слов по кнопке "Обнулить свой прогресс ♻️"

В процессе изучения новых слов - файл с которого осуществляется парсинг слов для выдачи пользователю по кнопке "Изучить слова 📚" подчищается (из него удаляются все выученные слова). С помощью данной кнопки файл можно обновить, вернув его в первоначальную форму.

После нажатия на кнопку пользователя встречает сообщение:

image

💾 Структура БД (SQLite):

image

About

Java Telegram Bot help users learn foreign languages 🤖

Topics

Resources

Stars

Watchers

Forks

Languages