Nodejs-разработка

Присоединяйтесь к нашей программе обучения

Второе задание: бот для получения курса валют

Необходимо создать телеграм-бота для получения актуального курса валют.

User Flow

1. Начало взаимодействия:

Пользователь заходит в чат бота в Telegram и пишет команду /start. Бот приветствует пользователя и предлагает команду для получения текущих курсов валют:

Пример приветствия бота:

Привет! Я помогу тебе узнать текущие курсы валют.

Напиши /currency для получения списка доступных валют.

2. Выбор валюты:

  • Пользователь вводит команду /currency.

  • Бот запрашивает у пользователя, какую валютную пару он хочет узнать (например, USD к EUR).

Пример сообщения от бота:

Введи валютную пару в формате USD-EUR, чтобы узнать курс обмена.

3. Получение данных:

  • Пользователь вводит валютную пару, например USD-EUR.

  • Бот делает запрос к внешнему API (например, Exchange Rates API) для получения текущего курса валют. В случае успешного запроса бот отвечает пользователю текущим курсом.

Пример сообщения от бота:

Текущий курс USD к EUR: 1.10.

4. Ошибки и обработка исключений:

  • Если пользователь введет неверный формат валютной пары, бот уведомляет о необходимости правильного ввода.

  • Если внешний API недоступен, бот сообщает пользователю об ошибке и просит попробовать позже.

Ой! Что-то пошло не так. Убедись, что ввел валютную пару в формате USD-EUR, или попробуй позже.

Требования

  • Разрешается использовать только node.js без дополнительных фреймворков.

  • Нельзя использовать готовые библиотеки для интеграции с сервисом, предоставляющим курсы валют.

  • Код должен быть асинхронным для обработки операций, таких как HTTP-запросы и взаимодействие с Telegram API.

  • Токен для телеграм бота должен конфигурироваться через файл конфигурации и может быть заменен на другой.

  • Нужно обеспечить гибкость кода для случая замены или добавления еще одного провайдера бота и сервиса для получения курсов валют. (см.Подсказки).

  • Необходимо логировать:

    • запросы к API курса валют и ответы на них

    • ошибки на уровне бота

  • Необходимо протестировать флоу обработки запроса на получение курса валют, используя мок для ответа от внешнего сервиса. Тесты должны охватывать успешные результаты, а также случаи с ошибками:

    • при некорректном вводе от пользователя

    • при проблемах с подключением к внешнему сервису

    • при ошибке в ответе от сервиса

  • Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.

Подсказки и ресурсы

Для написания проекта понадобятся следующие теоретические знания:

2. Dependency Injection (DI):

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

менеджер программы обучения

По любым вопросам по программе обучения пишите Светлане в Telegram