Как сделать так, чтобы бот на vk_api python мог получить информацию о пользователе через ответ
Я хочу сделать так, чтобы бот брал айди человека на чьё сообщение будет ответ
Вы можете использовать метод users.get из библиотеки vk_api для получения информации о пользователе по его ID. Например, чтобы получить имя и фамилию пользователя, вы можете использовать следующий код:
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, который позволяет получать обновления из ВКонтакте в режиме реального времени.
Вот пример кода, который позволяет достичь этой функциональности:
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. Также убедитесь, что у вашего бота есть права на доступ к сообщениям и информации о пользователях.