Проблема с циклом в телеграм-боте на aiogram

По команде "Лиги" должен появиться список из лиг, которые хранятся в "leagues". Но я так понимаю что совершил какую-то простую ошибку, поэтому ничего и не работает.

import aiogram
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

TOKEN = "мой токен"

bot = Bot(TOKEN)
dp = Dispatcher(bot)

leagues = ["Премьер-лига", "Бундеслига", "Чемпионшип"]
for league in leagues:
  urlkb = InlineKeyboardMarkup(row_width=1)
  urlbut = InlineKeyboardButton(league)
  urlkb.add(urlbut)

  @dp.message_handler(commands=["Лиги"])
  async def process_leagues(message: types.Message):
      await message.answer("Лиги:", reply_markup=urlkb)

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

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

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

Пробуй

@dp.message_handler(commands=["Лиги"])
async def process_leagues(message: types.Message):
    leagues = [("Премьер-лига", "premier_league"), ("Бундеслига", "bundesliga"), ("Чемпионшип", "championship")]
    markup = InlineKeyboardMarkup(row_width=1)
    for league, league_cd in leagues:
        # для инлайн кнопок нужно два параметра это text(позиционный) и callback_data
        # ловишь нажатие по callback_data
        # если ты ловиш их группой и думаешь обрабатывать в одном хендлере, то добавь префикс
        markup.add(InlineKeyboardButton(league, callback_data="prefix:league_cd"))
    await message.answer("Лиги", reply_markup=markup)


@dp.callback_query_handler(text_startswith="prefix")
async def call_leagues(call: types.CallbackQuery):
    # это будет premier_league, bundesliga или championship
    data = call.data.split(":")[1]
    ...
→ Ссылка