Привет всем! Собственно, суть проблемы указана в названии записи: как получить телефон пользователя с помощью Python и библиотеки Telebot. Давайте разберемся 😉
Ниже — пример рабочего года, который, надеюсь, вам поможет 🙂 Вдруг что — не стесняйтесь задавать вопросы на почту или в Telegram.
import telebot #Подключили библиотеку Телебот - для работы с Телеграм from telebot import types #Подключили дополнения import config #Подключили библиотеку Config, с помощью чего можем хранить токен не в коде программы ;) а в файле config.py. Важно: этот файл должен лежать в той же директории, что и код! bot = telebot.TeleBot(config.token) #Подключили токен @bot.message_handler(commands=['number']) #Объявили ветку для работы по команде <strong>number</strong> def phone(message): keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) #Подключаем клавиатуру button_phone = types.KeyboardButton(text="Отправить телефон", request_contact=True) #Указываем название кнопки, которая появится у пользователя keyboard.add(button_phone) #Добавляем эту кнопку bot.send_message(message.chat.id, 'Номер телефона', reply_markup=keyboard) #Дублируем сообщением о том, что пользователь сейчас отправит боту свой номер телефона (на всякий случай, но это не обязательно) @bot.message_handler(content_types=['contact']) #Объявили ветку, в которой прописываем логику на тот случай, если пользователь решит прислать номер телефона :) def contact(message): if message.contact is not None: #Если присланный объект <strong>contact</strong> не равен нулю print(message.contact) #Выводим у себя в панели контактные данные. А вообщем можно их, например, сохранить или сделать что-то еще.
Специально для вас — видео с более наглядной инструкцией:
Как видите — все очень и очень просто 🙂
Спасибо за внимание!
P.S. На моем канале Youtube один из подписчиков задал интересный вопрос: как скрыть клавиатуру после того, как телефонный номер был отправлен? Ответа на вопрос я не знал 🙁 Впрочем, спустя день подписчик подсказал решение, которым я и делюсь:
keyboard = types.ReplyKeyboardRemove() bot.send_message(message.chat.id, msg, reply_markup=keyboard)
P.P.S. не так давно возник вопрос — а как полученный от пользователя номер телефона отправить, например, в удобоваримом виде куда-то в группу? Все просто:
1. Добавляете бота, который должен отправить полученную информацию в нужную группу с правами администратора
2. В коде бота вносите следующие изменения в функцию def contact(message):
@bot.message_handler(content_types=['contact']) def contact(message): if message.contact is not None: print(message.contact) print(type(message.contact)) print('Name: ' + str(message.contact.first_name)) text = 'Пользователь: ' + message.contact.first_name + ': телефон: ' + message.contact.phone_number bot.send_message(id_channel, text)
Собственно, вы можете выводить все, что угодно — для этого просто используем название нужного поля по схеме:
phone_number': '***', 'first_name': '***', 'last_name': '***', 'user_id': ***, 'vcard': '***'
где звездочками скрыты получаемые в полном виде контактные данные пользователя.
Есть вопросы? Пишите на почту или в Телеграм.
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️