我有一个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
个点?