Как выполнить метод весеннего хранилища для понимания с неявным - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу сохранить данные из API Telegram для понимания типа с неявным, но есть ошибка

Error:(61, 9) type mismatch;
 found   : cats.effect.IO[Unit]
 required: scala.concurrent.Future[?]
      _ <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))

Код в примере TelegramBot, который использует библиотеку info.mukel.telegrambot4s 3.0.9.

  onCommand("/hello") { implicit msg =>
    for {
      _   <- reply(s"Hello ${msg.from.get.firstName}")
      _ <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))
    } yield ()
  }

Я пытался удалить ответ и добавить, этот код скомпилирован, но сохранение (внутри IO) не выполнено

  onCommand("/hello") { implicit msg =>
    for {
      res <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))
    } yield res
  }

Возможно ли решить эту проблему?

1 Ответ

1 голос
/ 25 апреля 2019

Попробуйте

onCommand("/hello") { implicit msg =>
  for {
    _ <- IO.fromFuture(IO.pure(reply(s"Hello ${msg.from.get.firstName}")))
    _ <- IO(userRepository.save(User(msg.from.get.id, isBot = true, msg.from.get.username.get)))
  } yield ()
}
...