Q:

помогите добавить клавиатуру к вк боту

вот мой код,ни в какую не получаеться добавить клавиатуру
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.upload import VkUpload
import Config as Cfg
import os, vk_api, json
import requests

vk_session = vk_api
vk_session = vk_api.VkApi(token=Cfg.token)
longpoll = VkBotLongPoll(vk_session, Cfg.group_id)

def send_message(user_id, msg, attachments):
    vk_session.method('messages.send', {'user_id': user_id,
                                        'random_id': get_random_id(),
                                        'message': msg,
                                        'attachment': attachments,
                                        'keyboard': None})

def on_message(user_id, msg):
    sended = False
    for x in range(1):
        if sended == True:
            break
        if "Привет" == msg:
            send_message(user_id, "привет", None)
            sended = True
        elif "Расписание" == msg :
            os.system(r'schedule.py')
            upload = vk_api.VkUpload(vk_session)
            photo = upload.photo_messages(photos="images/1.jpg")[0]
            attachments = []
            attachments.append('photo{}_{}'.format(photo['owner_id'], photo['id']))
            if os.path.exists(r'images\1.jpg'):
                send_message(user_id,"", attachments)
                path = r'images\1.jpg'
                os.remove(path)
            sended = True
            return attachments
    if sended == False:
        send_message(user_id, Cfg.wrong_text, None)

for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        on_message(event.obj.from_id, event.obj.text)

    elif event.type == VkBotEventType.GROUP_JOIN:
        send_message(event.obj.user_id, Cfg.welcome_text, None)

    elif event.type == VkBotEventType.GROUP_LEAVE:
        send_message(event.obj.user_id, Cfg.leaving_text, None) 

A:

В принципе я могу тебе показать как это прописывал я, дальше уже можешь откоректировать под себя, также советую тебе не использовать её в беседах
    def create_keyboard():
    keyboard = vk_api.keyboard.VkKeyboard(one_time=False)
    #False Если клавиатура должна оставаться откртой после нажатия на кнопку
    #True если она должна закрваться

    keyboard.add_button("Закрыть", color=vk_api.keyboard.VkKeyboardColor.DEFAULT)
    keyboard.add_button("Кнопка", color=vk_api.keyboard.VkKeyboardColor.POSITIVE)

    keyboard.add_line()#Обозначает добавление новой строки
    keyboard.add_button("Кнопка", color=vk_api.keyboard.VkKeyboardColor.NEGATIVE)

    keyboard.add_line()
    keyboard.add_button("Кнопка", color=vk_api.keyboard.VkKeyboardColor.PRIMARY)
    keyboard.add_button("Кнопка", color=vk_api.keyboard.VkKeyboardColor.PRIMARY)

    return keyboard.get_keyboard()
    #Возвращает клавиатуру

    def create_empty_keyboard():
    keyboard = vk_api.keyboard.VkKeyboard.get_empty_keyboard()

    return keyboard
    #Эта функция используется для закрытия клавиатуры

Прописываем метод
    for event in longpoll.listen():
    if event.type == vk_api.bot_longpoll.VkBotEventType.MESSAGE_NEW:
        try:
            print(event.obj.from_id)
            print("Текст Сообщения: " + str(event.obj.text or event.message.text))
            print('*'* 30)
            response =event.obj.text.casefold() or event.message.text. casefold() 
            # не уверен насчёт event.message.text
            keyboard = create_keyboard()
            empty_keyboard = create_empty_keyboard()

После чего прописываем условие, я его прописываю вот так
         if event.from_user:
            if response == "привет":
                api.messages.send(peer_id=event.obj.peer_id or event.message.peer_id, message="Приветики", keyboard=keyboard, random_id=0)
            elif response == "начать":
                api.messages.send(peer_id=event.obj.peer_id or event.message.peer_id, message="Начинаем", keyboard=keyboard, random_id=0)
            elif response == "закрыть":
                api.messages.send(peer_id=event.obj.peer_id or event.message.peer_id, message="Закрываем", keyboard=empty_keyboard, random_id=0)

