Ширина Inline кнопок в боте на aiogram

Рейтинг: 0Ответов: 2Опубликовано: 29.01.2023

Имеется такой код

markup = InlineKeyboardMarkup(row_width=6)
info = InlineKeyboardButton('text', callback_data=id)
ready = InlineKeyboardButton('✅', callback_data=id)
cancel = InlineKeyboardButton('🚫', callback_data=id)
markup.row(info, ready, cancel)

Можно ли сделать так, чтобы кнопка info занимала 4 из 6 столбцов, а ready и cancel занимали по одному.

Ответы

▲ 0

Параметр row_width=6 указывает количество возможных inline кнопок на одной строке. По умолчанию он равняется трём.

Если я правильно понял вас, то вам нужно разместить кнопку info на одной строке, а кнопки ready и cancel на другой. В таком случае вы можете использовать add() и insert().

С помощью add() – происходит добавление кнопки на новую строку. С помощью insert() вы присоединяете кнопку к уже имеющейся (последней) строке. В вашем случае решение выглядит так:

markup = InlineKeyboardMarkup()

info = InlineKeyboardButton('text', callback_data=id)
ready = InlineKeyboardButton('✅', callback_data=id)
cancel = InlineKeyboardButton('🚫', callback_data=id)

markup.add(info).add(ready).insert(cancel)
▲ 0

У API телеграм-бота такой опции нет. Приведенные функции - это обертки от API. А само апи получает двумерный массив кнопок без размеров, только ряды и кнопки в них. Если в ряде будет 3 кнопки, они будут занимать ровно по трети длины.