マルチユーザー電報ボット Ruby
概要
ユーザーごとに深い条件ツリーを備えたマルチプレイヤー ボットを作成する必要があります。 ボットを同時に使用できるようにするには、複数のユーザーが必要です。そして、彼らのセッションはお互いに中断しません。 非同期(または非同期が必要ない?)電報ボット Ruby を作成するにはどうすればよいですか?または、私のタスクを実現するための他の方法。 私は gem telegram-bot-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: "Hello, enter name:")
bot.listen do |message2|
@name = message2.text
break
end
bot.api.send_message(chat_id: message.chat.id, text: "Nice to meet you #{@name},now input age")
bot.listen do |message3|
@age = message3.text
break
end
when '/stop'
bot.api.send_message(chat_id: message.chat.id, text: "Bye")
else
bot.api.send_message(chat_id: message.chat.id, text: "Enter /start ")
end
end
end
github でテレグラム Ruby ボットの実装例を調べてみたり、グーグルで検索したりしましたが、まだわかりません。ボットをスタンドアロン スクリプトとして作成します。レールは使いません。
解決策
マルチユーザーボットを使用するには、リスナーコードをスレッドでラップします。
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
Thread.start(message) do |message|
# make stuff
end
end
end
すべてのセッションは別のスレッドで動作します
その他、あなたのアイデアとして: