我有一个简单的电报机器人,当用户按下"开始"时会出现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)
这是从用户那里获取电话号码的正确方法吗?如果不是,我怎么能得到它?
答案 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...