Нужна помощь в записи отправленного пользователем контакта в БД
Не получается записать конкретное отправленное пользователем сообщение(контакт) в БД. Атрибута text у a.message.from_user нет и я не вижу других способов.
@dp.callback_query_handler(lambda a: True)
async def inline_buttons1(a):
user_id = a.message.chat.id
if a.data == 'private_office':
markup_send_contact = ReplyKeyboardMarkup(resize_keyboard=True)
bt1 = KeyboardButton(text='?Отправить свой номер телефона', request_contact=True)
markup_send_contact.row(bt1)
await bot.send_message(a.message.chat.id, MESSAGES['send_contact'],
reply_markup=markup_send_contact, parse_mode='MarkdownV2')
conn = sqlite3.connect('bigben.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO krasusers(user_id, telefone) VALUES(?,?)', (user_id,
a.message.from_user.text, ))
conn.commit()
conn.close()
Ответы (1 шт):
Автор решения: MyZik
→ Ссылка
Для того, чтобы отловить отправленный пользователем контакт, можете использовать параметр content_types=["contact"], в Вашем хэндлере.
async def create_user(user_id: int, phone: str):
conn = sqlite3.connect('bigben.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO krasusers (user_id, telefone) VALUES (?, ?)', (user_id, phone))
conn.commit()
conn.close()
@dp.callback_query_handler(text="private_office")
async def private_office_handler(query: CallbackQuery):
keyboard = ReplyKeyboardMarkup(resize_keyboard=True).add(
KeyboardButton(text="?Отправить свой номер телефона", request_contact=True)
)
await bot.send_message(
query.from_user.id,
MESSAGES["send_contact"],
reply_markup=keyboard,
parse_mode="MarkdownV2",
)
@dp.message_handler(content_types=["contact"])
async def contact_handler(message: Message):
contact = message.contact
await create_user(message.from_user.id, contact.phone_number)