无法使用KeyboardButton

时间:2017-02-07 10:01:06

标签: python api telegram telegram-bot

我有一个简单的电报机器人,当用户按下"开始"时会出现KeyboardButton。用户按下KeyboardButton后会出现一个窗口,在该窗口中,用户按下一个按钮"共享电话号码"。我需要获得这个电话号码,但需要一个"联系人"响应中的对象是空的。我使用的模块 - pyTelegramBotApi。

import telebot
from telebot import types

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['start'])
def register(message):
    keyboard = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    reg_button = types.KeyboardButton(text="Share your phone number", request_contact=True)
    keyboard.add(reg_button)
    response = bot.send_message(message.chat.id, 
                                "You should share your phone number", 
                                reply_markup=keyboard)
    print(response.contact)  # response.contact = None here

if __name__ == '__main__':
    bot.polling(none_stop=True)

这是从用户那里获取电话号码的正确方法吗?如果不是,我怎么能得到它?

2 个答案:

答案 0 :(得分:3)

您应该为联系人定义新的处理程序

@bot.message_handler(content_types=['contact'])
def contact_handler(message):
    print(message.contact.phone_number)

答案 1 :(得分:0)

不,这是错的。您应该定义一个新的handler来处理contact

dispatcher.add_handler(MessageHandler(Filters.contact, get_contact))

然后你应该定义你的get_contact功能:

def get_contact(bot, update):
   chat_id = update.message.chat_id
   phone_number = update.message.contact.phone_number
   other stuffs...