Не могу сменить row_width telebot

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

Есть телеграм-бот написанный на пайтон telebot. Делаю кнопку, при нажатии на которую будет добавляться ещё одна. Имена кнопок сохраняю в json, потом создаю сами кнопки. Мне необходимо сменить row_width. Когда я пишу markup = types.InlineKeyboardMarkup(row_width=3) кнопки остаются в один ряд. Я думаю, что проблема в цикле, но не знаю как без него.

path = r'file.json'

with open(path, 'r') as file:
    button_array = json.load(file)

button_array2 = [types.InlineKeyboardButton(
    text='Add button', callback_data='add_button')]


def button_array2_append():
    for item in button_array:
        button_array2.append(types.InlineKeyboardButton(
            text=str(item), callback_data=f'{item}_'))


button_array2_append()


@bot.message_handler(commands=['add'])
def add(message):

    markup = types.InlineKeyboardMarkup(row_width=3)
    for item in button_array2:
        markup.add(item)
    bot.send_message(message.chat.id, 'Аdd button', reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def calldata(call):
    global button_array2
    bot.answer_callback_query(callback_query_id=call.id)

    if call.data == 'add_button':
        button_array2 = [types.InlineKeyboardButton(
            text='Add button', callback_data='add_button')]
        bot.register_next_step_handler(bot.send_message(
            call.message.chat.id, 'buttons name'), buttons_create)


def buttons_create(message):
    button_array.append(message.text)
    with open(path, 'w') as file:
        json.dump(button_array, file)
    button_array2_append()

Ответы

▲ 0

Юзайте insert вместо add

for item in button_array2:
    markup.insert(item)
▲ 0

в markup.add *button_array2

'''

    markup = types.ReplyKeyboardMarkup
    markup = types.InlineKeyboardMarkup(row_width=2)
    markup.add(*button_array2)
    bot.send_message(message.chat.id, 'Аdd button', reply_markup=markup)

'''