p5-vbnekit / test_task

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тестовое задание для стажировки

Разработать telegram-бота для транслитерации из кириллицы в латиницу на базе библиотеки Юлия.

  1. В "движке" бота для выполнения транслитерации должна быть использована библиотека Юлия - https://iuliia.ru/.
  2. Язык программирования - любой на выбор из списка реализаций библиотеки Юлия - https://iuliia.ru/#code.
  3. Для взаимодействия с telegram сервером рекомендуется использовать лубую совместимую готовую библиотеку на выбор из open-source реализаций.
  4. Рекомендуется предпочитать максимально свободные лицензии в коде программы и её зависимостях.

Требуемый функционал бота

  1. Обрабатывать сообщения и команды только от пользователей состоящих в заданной группе в telegram (задаётся в настройках программы).
  2. Поддерживать независимый конечный автомат состояний для каждого пользователя.
  3. Обеспечить обработку следующих команд:
    • /start - сбрасывает состояние бота (для текущего пользователя) в начальное.
    • /standard - выбор стандарта кодирования (из тех, что поддерживаются библиотекой Юлия).
      • Cледующее за командой /standard сообщение интерпретируется как выбранный пользователем стандарт.
      • Обеспечить графическое выпадающее меню с выбором стандарта для "юзабилити".
      • Запоминать выбранный пользователем стандарт до завершения работы программы.
    • /translate - транслитерация следующего текстового сообщения согласно выбранному ранее стандарту кодирования.
      • Если стандарт кодирования не был выбран пользователем ранее (командой /standard), то перейти в подсостояние выбора стандарта кодирования (предупредив об этом пользователя), затем продолжить выполнение транслитерации.
      • Ответом на сообщение пользователя с текстом для транслитерации отправлять перекодированное сообщение.
  4. Перечислять все поддерживаемые команды в графическом выпадающем меню для "юзабилити".
  5. Проверять введённые команды и их параметры на корректность - "защита от дурака".
  6. Если в процессе выполнения команды происходит ошибка (ввод неверных данных, исключение и проч.), то бот сообщает об этом пользователю и завершает выполнение текущей команды.
  7. Если бот не находится в состоянии выполнения какой-либо команды, то любое текстовое сообщение не соответствующее регулярному выражению ^\s*/.+$ интерпретировать как неявный запрос на транслитерацию (команда /translate).

Пример коммуникации пользователя (П) с ботом (Б)

П: Привет, Юлия Щеглова.
Б: > Привет, Юлия Щеглова.
   Выберите один из возможных вариантов стандарта кодирования.

П: ГОСТ Р 52290-2004
Б: > ГОСТ Р 52290-2004
   Выбран стандарт "ГОСТ Р 52290-2004".

Б: > Привет, Юлия Щеглова.
   Privet, Yuliya Shcheglova.
П: Пока, Юлька!
Б: > Пока, Юлька!
   Poka, Yul'ka!
П: /translate
Б: > /translate
   Введите сообщение для транслитерации.

П: Ю. Щ.
Б: > Ю. Щ.
   Yu. Shch.

About