Python VK_API + KeyBoard
Подскажите, как можно в данный код добавить inline-кнопки. Данный код скачал, а в vk_api не шарю. Единственное что понял, inline-кнопки можно включить или выключить.
import vk_api, json
from config import TOKEN
vk_session = vk_api.VkApi(token = TOKEN)
longpoll = VkLongPoll(vk_session)
clck = 0
number_clck = 0.001
class User:
def __init__(self, id, mode):
self.id = id
self.mode = mode
self.name = ''
self.age = -1
self.clck = 0
def get_keyboard(buts):
nb = []
for i in range(len(buts)):
nb.append([])
for k in range(len(buts[i])):
nb[i].append(None)
for i in range(len(buts)):
for k in range(len(buts[i])):
text = buts[i][k][0]
color = {'зеленый' : 'positive', 'красный' : 'negative', 'синий' : 'primary'}[buts[i][k][1]]
nb[i][k] = {"action": {"type": "text", "payload": "{\"button\": \"" + "1" + "\"}", "label": f"{text}"}, "color": f"{color}"}
first_keyboard = {'one_time': False, 'buttons': nb, 'inline' : False}
first_keyboard = json.dumps(first_keyboard, ensure_ascii=False).encode('utf-8')
first_keyboard = str(first_keyboard.decode('utf-8'))
return first_keyboard
def sender(id, text, key):
vk_session.method('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0, 'keyboard' : key})
clear_key = get_keyboard(
[]
)
click_menu_key = get_keyboard([
[('? Клик', 'зеленый',)],
[('Вернуться обратно', 'синий')]
])
menu_key = get_keyboard([
[('Информация', 'синий')],
[('? Мой профиль', 'зеленый')],
[('Заработать', 'красный')]
])
users = []
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
id = event.user_id
msg = event.text.lower()
if msg == 'начать':
flag = 0
for user in users:
if user.id == id:
flag = 1
break
if flag == 0:
users.append(User(id, 'reg1'))
sender(id, 'Зарегистрируйтесь в боте.\nВведите своё имя:', clear_key)
elif flag == 1:
for user in users:
if user.id == id:
if not(user.mode in ['reg1', 'reg2']):
sender(id, 'Вы уже зарегистрировались!', menu_key)
else:
for user in users:
if user.id == id:
if user.mode == 'reg1':
user.name = msg.title()
sender(id, 'Введите свой возраст:', clear_key)
user.mode = 'reg2'
elif user.mode == 'reg2':
try:
user.age = int(msg)
sender(id, 'Вы успешно зарегистрировались!', menu_key)
user.mode = 'menu'
except:
sender(id, 'Значение не подходит!', clear_key)
elif user.mode == 'menu':
if msg == 'информация':
sender(id, f'Данный бот в режиме тестировки.', menu_key)
if msg == '? мой профиль':
sender(id, f'Ваше имя в боте: {user.name}\nВаш возраст в боте: {user.age}', menu_key)
if msg == 'заработать':
sender(id, f'Кликайте, чтобы заработать как можно больше!', click_menu_key)
if msg == 'вернуть обратно':
sender(id, f'Вы вернулись в меню', menu_key)
if msg == '? клик':
sender(id, f'? {user.name}, Ты кликнул(а) и получил {number_clck} руб!\n? Твой баланс: {user.clck}\n\n???? Текущая выплата за один клик: {number_clck} руб. \n\n? Продолжай в том же духе!', click_menu_key)
user.clck += number_clck```
Заранее спасибо за помощь и Ваши ответы