Как создать многоуровневую клавиатуру Viber
Я пытаюсь создать клавиатуру для бота Viber, используя viber-bot-python и следующий код:
keyboard = {
"DefaultHeight": True,
"BgColor": self.background_color,
"Type": "keyboard",
"Buttons": [
{
"Columns": 2,
"Rows": 3,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '1',
"ReplyType": "message",
"Text": '1'
},
{
"Columns": 2,
"Rows": 3,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '2',
"ReplyType": "message",
"Text": '2'
},
{
"Columns": 2,
"Rows": 3,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '3',
"ReplyType": "message",
"Text": '3'
},
{
"Columns": 2,
"Rows": 3,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '4',
"ReplyType": "message",
"Text": '4'
},
{
"Columns": 1,
"Rows": 3,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '5',
"ReplyType": "message",
"Text": '5'
}
]
}
И ожидайте, что получится следующая структура:
Select button:
[1] [2]
[3] [4]
[ 5 ]
Но я получаю следующее исключение:
File "\venv\lib\site-packages\viberbot\api\message_sender.py", line 53, in _post_request
raise Exception(u"failed with status: {0}, message: {1}".format(result['status'], result['status_message']))
Exception: failed with status: 3, message: keyboard is not valid. [numeric instance is greater than the required maximum (maximum: 2, found: 3)]
Я читал тему про дизайн клавиатуры, но это не помогает. Что в нем не так и как правильно собрать клавиатуру для Viber Bot?
1 ответ
Возможно, вы неправильно поняли изображение в теме дизайна клавиатуры. Это означает, что одна кнопка может уместиться в этой сетке (6x2).
Итак, если вам нужно создать такое меню, как:
Select button:
[1] [2]
[3] [4]
[ 5 ]
Затем для каждой кнопки нужно указать, сколько места должна занимать каждая кнопка. Первые 4 кнопки - займут 3 (из 6) столбцов, а последняя 5-я - 6 (из 6). И каждая кнопка может занимать 1 строку (если вам нужна маленькая кнопка) или 2 строки (если вы хотите, чтобы они были большими). Пуговица с 3 рядами невозможна.
И теперь ваш код должен выглядеть следующим образом:
keyboard = {
"DefaultHeight": True,
"BgColor": self.background_color,
"Type": "keyboard",
"Buttons": [
{
"Columns": 3,
"Rows": 1,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '1',
"ReplyType": "message",
"Text": '1'
},
{
"Columns": 3,
"Rows": 1,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '2',
"ReplyType": "message",
"Text": '2'
},
{
"Columns": 3,
"Rows": 1,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '3',
"ReplyType": "message",
"Text": '3'
},
{
"Columns": 3,
"Rows": 1,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '4',
"ReplyType": "message",
"Text": '4'
},
{
"Columns": 6,
"Rows": 1,
"BgColor": "#e6f5ff",
"ActionType": 'reply',
"ActionBody": '5',
"ReplyType": "message",
"Text": '5'
}
]
}