Ruby Telegram Bot,将值传递给CallbackQuery?

时间:2018-01-30 07:31:24

标签: ruby telegram

我有一个Telegram Bot,可以更新一组球队的得分。

团队规模很大。

def collection_keyboard(identity)
  ip_addr = "127.0.0.1:27017"
  client = Mongo::Client.new([ip_addr], :database => "camp")

  kb = []
  client[:inventory].find({"owner": identity}, projection: {"_id": 0, "name": 1}).each do |doc|
    kb << Telegram::Bot::Types::InlineKeyboardButton.new(text: doc.to_s , callback_data: ??) //What do i put as the callback data?
  end
  markup = Telegram::Bot::Types::InlineKeyboardMarkup.new(inline_keyboard: kb)
  return markup
end

上述方法查询数据库并创建内联键盘,允许用户选择要增加的团队分数。

Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    case message
    when Telegram::Bot::Types::CallbackQuery
      if message.data == ?? //What do i check here?

      end
    end

一旦返回第一个CallbackQuery,将创建第二个内联键盘。该键盘将允许用户选择要给出的点数。 10,20,30。

但是,由于组大小不同,如何传递用户点击的内联键盘的值,以便我可以为该特定团队添加点数?由于该组是动态的,我无法使用常规switch语句捕获所有可能的回调返回值?

例如,如果用户点击Yellow,我该如何将此值传递给下一个InlineKeyboard,以便用户可以向其添加10个点?

0 个答案:

没有答案