Доброго времени суток.
Пытаюсь создать многопользовательского бота с достаточно объёмным деревом контакта бота с пользователем. В общем бот написан (использовал 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