Программное обеспечение

Vk bot python longpool Клавиатура помогите пж

Помогите внедрить клавиатуру в бота, не понимаю как:
print("import")
import wikipedia
language = "ru"
wikipedia.set_lang(language)
from translate import Translator
import vk_api
from vk_api.keyboard import VkKeyboard
from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError
from vkbottle.bot import Bot, Message
from vkbottle import Keyboard, KeyboardButtonColor, Text, OpenLink
from vkbottle.tools import DocMessagesUploader
from random import *
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api import *
translator= Translator(from_lang="russian",to_lang="english")
import datetime
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api import VkUpload
print("vk")
vk_session = VkApi(token='слышь, не наглей')
long_poll = VkBotLongPoll(vk_session, 'не знаю надо оно тебе или нет')
vk = vk_session.get_api()
t_p = 1
token="я скозал не наглей"
bh = vk_api.VkApi(token = token)
give = bh.get_api()
longpoll = VkLongPoll(bh)
reg_name = False
print("def's")
def send_textVk(id, text):
bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})
def get_keys():
menu = VkKeyboard()
menu.add_button(label="мой ид", color="positive")
menu.add_line()
menu.add_button(label="45", color="primary")
menu.add_line()
menu.add_button(label="45", color="positive")
menu = menu.get_keyboard()
return menu
def get_name(uid: int) -> str:
data = vk.users.get(user_ids= uid)[0]
return "{} {}".format(data["first_name"], data["last_name"])
print("listening")
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to _me:
message = event.text.lower()
id = event.user_id
print("Новое сообщение от",get_name(id),"(id:",id,'):', event.text)
if message == "меню":
fullname = get_name(id)
hello = randint(0,3)
if hello == 0:
hello_t = "Здравствуй, "
elif hello == 1:
hello_t = "Привет, "
elif hello == 2:
hello_t = "Ку, "
else:
hello_t = "Как дела, "
if hello != 3:
end_t = hello_t + fullname
send_textVk(id, end_t)
else:
end_t = hello_t + fullname + '?'
send_textVk(id, end_t)
send_textVk(id, "Список команд:")
send_textVk(id, "Переводчик")
send_textVk(id, "инфо")
elif message == "инфо":
send_textVk(id, 'Создатель: [id не буду свой айди палить|и имя]')
else:
send_textVk(id, 'Я вас не понимаю! (Напишите меню)')
Для того чтобы добавить клавиатуру в вашего бота на VK, вы можете использовать модуль VkKeyboard. В вашем коде уже импортирован этот модуль, так что можно приступить к созданию клавиатуры.

Например, вы можете добавить клавиши с помощью функции add_button(). Каждая клавиша задается меткой (label) и цветом (color). Кроме того, вы можете добавлять разделители с помощью функции add_line().

Вот пример кода, который добавляет клавиатуру с двумя кнопками и отправляет ее пользователю:
 def send_textVk(id, text, keyboard=None): 
bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0, 'keyboard': keyboard})

def get_keyboard():
keyboard = VkKeyboard(one_time=False)

keyboard.add_button('Кнопка 1', color=VkKeyboardButtonColor.POSITIVE)
keyboard.add_line()
keyboard.add_button('Кнопка 2', color=VkKeyboardButtonColor.NEGATIVE)

return keyboard.get_keyboard()

for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
message = event.text.lower()
id = event.user_id

if message == 'меню':
send_textVk(id, 'Выберите действие', keyboard=get_keyboard())
Обратите внимание, что параметр one_time в функции VkKeyboard указывает, будет ли клавиатура скрыта после первого использования. Если вы хотите, чтобы клавиатура оставалась открытой, установите значение параметра one_time на False.

Также обратите внимание, что при отправке сообщения с клавиатурой вы должны передать параметр keyboard со значением, возвращенным функцией get_keyboard(). Это позволит отобразить клавиатуру в сообщении.

Надеюсь, это поможет вам добавить клавиатуру в вашего бота на VK!
Ваня Вакулин
Ваня Вакулин
1 441
Лучший ответ
Андрей Сергеевич спасибо вам огромное!
Андрей Сергеевич Олег,:
Traceback (most recent call last):
File "C:\Users\TIMUR\Desktop\python\Новая папка\fff.py", line 89, in <module>
send_textVk(id, end_t,keyboard = get_keyboard())
File "C:\Users\TIMUR\Desktop\python\Новая папка\fff.py", line 60, in get_keyboard
keyboard.add_button('Кнопка 1', color=VkKeyboardButtonColor.POSITIVE)
NameError: name 'VkKeyboardButtonColor' is not defined. Did you mean: 'KeyboardButtonColor'?
как так то
я заменил VkKeyboardButtonColor на KeyboardButtonColor но вылезло еще больше ошибок, вот последняя строка:
TypeError: Object of type KeyboardButtonColor is not JSON serializable
Андрей Сергеевич спасибо вам, я разобрался: вместо color=VkKeyboardButtonColor.POSITIVE нужно писать color="positive"
но всё равно спасибо!
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Нажми меня', color=VkKeyboardColor.PRIMARY)


vk.messages.send(user_id=user_id, message='Привет!', keyboard=keyboard.get_keyboard())



keyboard = VkKeyboard(one_time=True)

keyboard.add_button('Кнопка 1', color=VkKeyboardColor.PRIMARY)

keyboard.add_line()

keyboard.add_button('Кнопка 2', color=VkKeyboardColor.SECONDARY)

keyboard.add_button('Кнопка 3', color=VkKeyboardColor.POSITIVE)






Чтобы добавить клавиатуру в вашего бота, вам нужно сначала создать объект клавиатуры, используя класс VkKeyboard из библиотеки vk_api.

если вы не знаете куда вставлять то нужно вставить в ыдаваемое сообщение в конце

как здесь vk.messages.send(user_id=user_id, message='Привет!', keyboard=keyboard.get_keyboard())
Андрей Сергеевич а куда вставлять , не подскажете?