Привіт усім! Власне, суть проблеми вказана в назві запису: як отримати телефон користувача за допомогою Python і бібліотеки Telebot. Давайте розберемося 😉
Нижче – приклад робочого року, який, сподіваюся, вам допоможе 🙂 Раптом що – не соромтеся ставити питання на пошту або в Telegram.
import telebot #Підключили бібліотеку Телебот - для роботи з Телеграм
from telebot import types #Підключили доповнення
import config #Підключили бібліотеку Config, за допомогою чого можемо зберігати токен не в коді програми ;) а у файлі config.py. Важливо: цей файл має лежати в тій самій директорії, що й код!
bot = telebot.TeleBot(config.token) #Підключили токен
@bot.message_handler(commands=['number']) #Об'явили гілку для роботи за командою number
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: #Якщо надісланий об'єкт contact не дорівнює нулю
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('Ім'я: ' + 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! ❤️