多用户电报机器人Ruby

hi3rlvi2  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(82)

我需要为每个用户做一个深条件树多人机器人。需要多个用户能够同时使用机器人。他们的会议不会互相打断。如何创建blog(或者我不需要blog?)电报机器人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: "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上看过telegram ruby bot实现的例子,但还是没有弄明白。我把机器人作为一个独立的脚本编写。我不用铁轨。

slwdgvem

slwdgvem1#

要使用多用户bot,您可以使用线程 Package 侦听器代码

Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    Thread.start(message) do |message|
      # make stuff
    end
  end
end

每个会话将在单独的线程中工作
还有其他的想法给你:

  • 创建一些实体(消息处理程序),在线程内示例化它,在此处理程序内禁用消息检查
  • 使用数据库存储每个用户“树”的状态

相关问题