@dert2313

Как отправить keyboard vk конкретному пользователю в беседе?

Проблема в том, что если в sendMessage указать user_id, то peer_id будет игнорироваться и сообщение будет отправлено в лс с сообществом, а если не указывать, то клавиатура обновиться у каждого пользователя в беседе
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
@teenager_python
В API ВКонтакте нет возможности отправлять клавиатуры напрямую конкретному пользователю в беседе. Однако, вы можете использовать метод messages.setActivity для показа уведомления о том, что вы начали набирать сообщение, и затем отправить клавиатуру в ответном сообщении.

Вот пример кода на Python, который отправляет клавиатуру в ответном сообщении пользователю в беседе:
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import random

# Токен вашего сообщества
TOKEN = "YOUR_TOKEN_HERE"

# Инициализация VK API
vk_session = vk_api.VkApi(token=TOKEN)
longpoll = VkLongPoll(vk_session)

# Создание клавиатуры
keyboard = VkKeyboard(one_time=True)
keyboard.add_button("Кнопка 1", color=VkKeyboardColor.PRIMARY)
keyboard.add_button("Кнопка 2", color=VkKeyboardColor.SECONDARY)
keyboard.add_button("Кнопка 3", color=VkKeyboardColor.NEGATIVE)

# Обработчик новых сообщений
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me:
        # Отправляем уведомление о том, что мы начали набирать сообщение
        vk_session.method("messages.setActivity", {"peer_id": event.peer_id, "type": "typing"})
        
        # Отправляем сообщение с клавиатурой
        vk_session.method("messages.send", {"peer_id": event.peer_id, "message": "Выберите действие:", "keyboard": keyboard.get_keyboard(), "random_id": random.randint(1, 1000)})

В этом примере мы создаем клавиатуру с помощью класса VkKeyboard, затем в цикле обработки новых сообщений мы отправляем уведомление о том, что мы начали набирать сообщение с помощью метода messages.setActivity, а затем отправляем сообщение с клавиатурой с помощью метода messages.send. Клавиатура отправляется в ответном сообщении пользователю в беседе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы