Как нажать на кнопку VK на python?

kyurew

Участник
Автор темы
64
49
У некоторых ботов в вк есть такие кнопки для управления ими:
1690023376706.png
При нажатии на одну из них, отправляется сообщение с текстом, который написан в этой кнопке. Мне нужно нажать на неё, я пробовал с просто написать сообщение с тем, что написано в кнопке, но бот как-то понимает, что я написал это, а не нажал на кнопку:
код:
import vk_api
#часть кода с токеном удалил
vk = vk_session.get_api()

vk_session.method("messages.send", {
    "random_id": 0,
    "message": "выход",
    "peer_id": id
})

Как можно нормально сделать такое нажатие на кнопку?
 

Mamashin

Известный
984
532
Могу предложить свою версию на vkbottle
Писал за 5 минут, поэтому говнокод, payload предоставляет задать некую команду, так называемый target для кнопки клавиатуры VK.
Бот отвечает только на нажатия клавиатуры, если скопировать и вставить текст - бот нечего не ответит.


keyboard.py:
from vkbottle.bot import Bot, Message
from vkbottle import Keyboard, KeyboardButtonColor, Text

token = "str"

bot_token = token
bot_group_id = 0 # int
bh = Bot(bot_token, bot_group_id)
bh.labeler.vbml_ignore_case = True

btn_hello = "Приветик!"
btn_bh = "BlastHack"
btn_primary = "Синий"
btn_red = "Красненький"

@bh.on.private_message(text=['/gk', 'Привет'])
async def get_keyboard(bh: Message):
    await bh.answer(
    message="Клавиатура:",
    keyboard=(
    Keyboard(one_time=False, inline=False)
    .add(Text(btn_hello, payload={'cmd' : 'hello'}), color=KeyboardButtonColor.POSITIVE)
    .add(Text(btn_bh, payload={'cmd' : 'bh'}), color=KeyboardButtonColor.POSITIVE)
    .row()
    .add(Text(btn_primary, payload={'cmd' : 'btn_p'}), color=KeyboardButtonColor.PRIMARY)
    .add(Text(btn_red, payload={'cmd' : 'btn_r'}), color=KeyboardButtonColor.NEGATIVE)
    ).get_json()
    )

@bh.on.private_message(payload={'cmd' : 'hello'})
async def hello(bh: Message):
    await bh.answer(btn_hello)

@bh.on.private_message(payload={'cmd' : 'bh'})
async def cmd_bh(bh: Message):
    await bh.answer(btn_bh)

@bh.on.private_message(payload={'cmd' : 'btn_p'})
async def cmd_primary(bh: Message):
    await bh.answer(btn_primary)

@bh.on.private_message(payload={'cmd' : 'btn_r'})
async def cmd_negative(bh: Message):
    await bh.answer(btn_red)



bh.run_forever()
 

kyurew

Участник
Автор темы
64
49
Бот отвечает только на нажатия клавиатуры, если скопировать и вставить текст - бот нечего не ответит.
мне и надо нажать на кнопку, мне не нужно их создавать

неактуал, я смог сделать что хотел
 
Последнее редактирование: