Ошибка с inline меню в aiogram
Выскакивает при нажатии на callback_data равному "England" такая ошибка: markup = InlineKeyboardMarkup(row_width=1).add(InlineKeyboardButton(team, callback_data=f"prefix:{team_cd}")) NameError: name 'team' is not defined
@dp.message_handler(commands=["leagues"])
async def football_leagues(message: types.Message):
football_leagues = [
(emoji.emojize(":England:") + " Англия, Премьер-лига ", "England"),
(emoji.emojize(":England:") + " Англия, Чемпионшип ", "England-2"),
(emoji.emojize(":Spain:") + " Испания, Примера ", "Spain"),
(emoji.emojize(":Spain:") + " Испания, Сегунда ", "Spain-2"),
(emoji.emojize(":Germany:") + " Германия, Бундеслига ", "Germany"),
(emoji.emojize(":Germany:") + " Германия, 2-я Бундеслига ", "Germany-2"),
(emoji.emojize(":Italy:") + " Италия, Серия А ", "Italy"),
(emoji.emojize(":Italy:") + " Италия, Серия B ", "Italy-2")
]
markup = InlineKeyboardMarkup(row_width=1)
for league, league_cd in football_leagues:
markup.add(InlineKeyboardButton(league, callback_data=f"prefix:{league_cd}"))
await message.answer("Лиги:", reply_markup=markup)
@dp.callback_query_handler(text_startswith="prefix")
async def teams(callback: types.CallbackQuery):
data = callback.data.split(":")[1]
await callback.answer()
if data == "England":
markup = InlineKeyboardMarkup(row_width=1).add(InlineKeyboardButton(team, callback_data=f"prefix:{team_cd}"))
await callback.answer("Лиги:", reply_markup=markup)
else:
await callback.message.answer("Выберите чемпионат Англии")
@dp.message_handler(commands=["teams_of_England"])
async def teams_of_England(message: types.Message):
teams_of_England = [
("Манчестер Сити", "man-city"),
("Манчестер Юнайтед", "man-united"),
("Ливерпуль", "liverpool")
]
markup = InlineKeyboardMarkup(row_width=1)
for team, team_cd in teams_of_England:
markup.add(InlineKeyboardButton(team, callback_data=f"prefix:{team_cd}"))
await message.answer("Англия, Премьер-лига:", reply_markup=markup)
@dp.callback_query_handler(text_startswith="prefix")
async def teams(callback: types.CallbackQuery):
data = callback.data.split(":")[1]
await callback.answer()
Ответы (1 шт):
Автор решения: biflé
→ Ссылка
Возможно, стоит попробовать сделать так:
for i in teams_of_England:
markup.add(InlineKeyboardButton(i[0], callback_data=f"prefix:{i[1]}"))