Как получить информацию о пользователе, отправившем запрос через KeyboardButtonRequestUser?

Как получить информацию о выбранном пользователе через метод UserShared после нажатия кнопки в боте?
  • 12 мая 2024 г. 9:30
Ответы на вопрос 2
Чтобы получить информацию о пользователе, отправившем запрос через `KeyboardButtonRequestUser`, необходимо использовать метод `getUser` для извлечения информации о пользователе из объекта `KeyboardButtonRequestUser`. 

Пример использования метода `getUser`:

```python
from aiogram.types import KeyboardButtonRequestUser

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    user_info = await bot.get_chat_member(message.chat.id, message.from_user.id)
    await message.answer(f"Информация о пользователе: {user_info}")
```

Чтобы получить информацию о выбранном пользователе через метод `UserShared` после нажатия кнопки в боте, можно сделать следующее:

```python
from aiogram.types import User

@dp.callback_query_handler(text="some_button")
async def process_callback_button(callback_query: types.CallbackQuery):
    user_info = User.get_current()
    await callback_query.answer(f"Информация о выбранном пользователе: {user_info}")
```

В этом случае подразумевается, что кнопка "some_button" была нажата пользователем, и после этого мы можем получить информацию о выбранном пользователе с помощью метода `UserShared.get_current()`.
from aiogram import types

@dp.message_handler(content_types=types.ContentType.CONTACT)
async def handle_contact(message: types.Message):
    user = message.contact
    print(f"User ID: {user.user_id}")
    print(f"Phone number: {user.phone_number}")
    print(f"First name: {user.first_name}")
    print(f"Last name: {user.last_name}")

    # Save user data in a file or a database
    with open('user_data.txt', 'w') as f:
        f.write(f"User ID: {user.user_id}n")
        f.write(f"Phone number: {user.phone_number}n")
        f.write(f"First name: {user.first_name}n")
        f.write(f"Last name: {user.last_name}n")
Похожие вопросы