Top.Mail.Ru
Ответы

Как сделать так, чтобы бот на vk_api python мог получить информацию о пользователе через ответ

Я хочу сделать так, чтобы бот брал айди человека на чьё сообщение будет ответ

По дате
По рейтингу
Аватар пользователя
Оракул

Вы можете использовать метод users.get из библиотеки vk_api для получения информации о пользователе по его ID. Например, чтобы получить имя и фамилию пользователя, вы можете использовать следующий код:

123456
 id = event.user_id 
user_get = vk.users.get(user_ids=(id)) 
user_get = user_get[0] 
first_name = user_get['first_name'] # Имя пользователя 
last_name = user_get['last_name'] # Фамилия пользователя 
 

В этом примере event является объектом события, который содержит информацию о событии, в том числе ID пользователя, который отправил сообщение. Вы можете использовать этот ID для получения информации о пользователе с помощью метода users.get.

Аватар пользователя
Профи

Чтобы ваш бот, использующий vk_api в Python, мог получать информацию о пользователе, на чье сообщение он отвечает, вам понадобится использовать Long Poll API, который позволяет получать обновления из ВКонтакте в режиме реального времени.

Вот пример кода, который позволяет достичь этой функциональности:

123456789101112131415161718192021222324252627282930313233
 import vk_api 
from vk_api.longpoll import VkLongPoll, VkEventType 
 
# Инициализация сессии VK API 
vk_session = vk_api.VkApi(token='YOUR_ACCESS_TOKEN') 
vk = vk_session.get_api() 
longpoll = VkLongPoll(vk_session) 
 
# Функция для отправки сообщений 
def send_message(user_id, message): 
    vk.messages.send( 
        user_id=user_id, 
        message=message, 
        random_id=vk_api.utils.get_random_id() 
    ) 
 
# Основной цикл обработки событий 
for event in longpoll.listen(): 
    if event.type == VkEventType.MESSAGE_NEW and event.to_me: 
        if event.text.lower() == 'привет': 
            send_message(event.user_id, 'Привет!') 
 
        # Проверяем, является ли сообщение ответом на другое сообщение 
        if event.reply_message: 
            replied_user_id = event.reply_message['from_id'] 
            # Делаем запрос к VK API для получения информации о пользователе 
            user_info = vk.users.get(user_ids=replied_user_id, fields='first_name,last_name') 
            first_name = user_info[0]['first_name'] 
            last_name = user_info[0]['last_name'] 
            send_message(event.user_id, f"Вы отвечаете на сообщение от пользователя {first_name} {last_name}") 
 
        elif event.text.lower() == 'пока': 
            send_message(event.user_id, 'Пока!') 

В этом примере бот будет отправлять приветственное сообщение в ответ на сообщение "привет". Если пользователь отвечает на сообщение другого пользователя, бот получает идентификатор этого пользователя и использует его для запроса информации о нем с помощью метода users.get VK API. Затем бот отправляет сообщение с именем и фамилией пользователя, на которое был дан ответ.

Убедитесь, что вы замените 'YOUR_ACCESS_TOKEN' на свой собственный ключ доступа VK API. Также убедитесь, что у вашего бота есть права на доступ к сообщениям и информации о пользователях.