Telegram bot使用Ruby解析用户的电话号码?

时间:2018-01-02 10:12:49

标签: ruby telegram

我正在尝试让Telegram机器人向用户请求他/她的号码并对其进行操作。

Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    case message
    when Telegram::Bot::Types::CallbackQuery
    when Telegram::Bot::Types::Message
      case message.text
      when '/help'
        bot.api.send_message(
          chat_id: message.chat.id, 
          text: 'Display help.' 
          )
      end
      if message.contact.phone_number == "1111111" #undefined method
        bot.api.send_message(
          chat_id: message.chat.id, 
          text: 'Number received.' 
          )
      end
    else
      bot.api.send_message(
        chat_id: message.chat.id, 
        text: 'Unknown command.' 
        )
    end
  end
end

我能够获取Contact对象,但是如何访问对象的phone_number字段?使用Ruby包装器来处理Telegram机器人。

1 个答案:

答案 0 :(得分:0)

我通过在查询Contact字段之前为phone_number对象设置时态变量来修复此问题。不确定这是否是预期的互动,但它确实有效。

Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    if sender = message.contact #Set a variable to the Contact object.
      if sender.phone_number == "11111111"
        bot.api.send_message(
          chat_id: message.chat.id, 
          text: 'Phone number received.' 
          )
      end
    end
  end