python aiogram 3.x | Как разнести данные по кнопкам для telegram?

У меня есть код, который запрашивает данные с сайта в виде текстовых значений (всего 8 значений). Как сделать, чтобы получилось 1 кнопка = 1 значение (по порядку). Заранее извиняюсь за тупняк, я новичок

Данные приходят через код:

class Reg(StatesGroup):
    name = State()
    name1 = State()
 
@dp.message(StateFilter(Reg.name1))
async def processing_code(message: Message,
                         state: FSMContext,
) -> None:       
    await state.update_data(name1=message.text)
    await state.set_state(None)
    data = await state.get_data()
    async with "" as api:
            await api.update_assets()
            try:
                response = await api.fetch_***(data['name1'])
            except .errors.PlayerDoesNotExistError:
                return message.answer("")
            except KeyError:
                return message.answer("")
            except .errors.GameMaintenanceError:
                return message.answer("")
            except ValueError:
                return message.answer("")
                
            for character in response.characters:
            markup = InlineKeyboardMarkup(inline_keyboard=[
            [InlineKeyboardButton(text='аыпыке', callback_data='character1'), InlineKeyboardButton(text='кыпавпа', callback_data='character2')],
            [InlineKeyboardButton(text='текст', callback_data='character3'), InlineKeyboardButton(text='текст12', callback_data='character4')],
            [InlineKeyboardButton(text='текс3434т', callback_data='character5'), InlineKeyboardButton(text='текст232', callback_data='character6')],
            [InlineKeyboardButton(text='теdft434т', callback_data='character7'), InlineKeyboardButton(text='тек3432', callback_data='character8')]],
            resize_keyboard=True,
            one_time_keyboard=True
            )
                return message.answer("Выберите персонажа", reply_markup=markup)

character.name включает в себя 8 текстовых значений (имена персонажей) Должно быть 8 кнопок соответствующих имени персонажа


Ответы (1 шт):

Автор решения: Dezmonder

У вас правильная идея, использовать цикл for. Просто вы для каждого персонажа генерируете клавиатуру целиком (ещё похоже на ошибку отступа). Вам нужна конструкция примерно такая

buttons = []
for character in response.characters:
    buttons.append(InlineKeyboardButton(text=character.name, callback_data=character.num))

markup = InlineKeyboardMarkup(inline_keyboard=buttons, resize_keyboard=True, one_time_keyboard=True)

Главное, отправлять сообщение и формировать клавиатуру вне цикла

→ Ссылка