@ip0208

Многопользовательский бот Ruby. Как реализовать?

Доброго времени суток.
Пытаюсь создать многопользовательского бота с достаточно объёмным деревом контакта бота с пользователем. В общем бот написан (использовал gem telegram-bot-ruby) со всем его деревом, но абсолютно всё ломается при одновременном использовании несколькими юзерами.

Проблема: в коде ниже если запустить, на этапе когда мы просим юзер1 ввести имя, к примеру может запустить бота другой юзер2 в этот момент , написав /start , после этого бот отправит юзеру1 сообщение "Приятно познакомиться /start,теперь введите Ваш возраст".

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

Не та библиотека? Неправильный подход к реализации? Подскажите, пожалуйста, новичку как на Ruby реализовать правильно подобного бота?
Меня интересует реализация именно в Ruby.

Примитивный вариант кода:

Telegram::Bot::Client.run(token) do |bot|

  bot.listen do |message|
    case message.text
    when '/start'
      bot.api.send_message(chat_id: message.chat.id, text: "Привет, напиши своё имя")

      bot.listen do |message2| # ЭТАП 2 ждём ввода имени пользователя
        @name = message2.text
        break
      end

      bot.api.send_message(chat_id: message.chat.id, text: "Приятно познакомиться #{@name},теперь введите Ваш возраст")

      bot.listen do |message3| # ЭТАП 3 ждём ввода возраста
        @age = message3.text
        break
      end

    when '/stop'
      bot.api.send_message(chat_id: message.chat.id, text: "Пока")

    else
      bot.api.send_message(chat_id: message.chat.id, text: "Введите /start чтобы начать")
    end
  end
end
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы