@Novichek115

Почему код может не работать?

from aiogram import Bot,Dispatcher, executor, types

bot = Bot('token')
dp = Dispatcher(bot)

@dp.message_handler(commands = ['start'])
async def start(message: types.Message):
markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markup.add(types.KeyboardButton('Выбрать фильм'))
markup.add(types.KeyboardButton('На чай'))
await message.answer(f'Привет, меня зовут FilmBot! \nЯ помогу тебе выбрать фильм для просмотра',reply_markup=markup)

@dp.message_handler()
async def Vibr(message: types.Message):
if message.text == 'Выбрать фильм':
markups = types.ReplyKeyboardMarkup(one_time_keyboard=True)
markups.add(types.KeyboardButton('Жанр'))
await message.answer(f'Хорошо, давай выберем!',reply_markup=markups)
if message.text == 'Жанр':
markupt = types.InlineKeyboardButton(one_time_keyboard=True)
markupt.add(types.InlineKeyboardButton('Комедия'))
markupt.add(types.InlineKeyboardButton('Приключения'))
markupt.add(types.InlineKeyboardButton('Драма'))
markupt.add(types.InlineKeyboardButton('Фэнтези'))
await message.answer(f'Выбери жанр!',reply_markup=markupt)



executor.start_polling(dp)
Почему после нажатия кнопки жанр, не выводится сообщение с представленными видами жанров?
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
@codingoleg
Не знаю, как вы это написали, но у меня весь код подсвечивает ошибками на версии 2.25 или 3.*. У вас мешанина из разных клавиатур и переменных. Также я бы не стал в одном хэндлере содержать несколько условий - проще их разнести. Вот вам готовый код, но не знаю, как вы дальше сможете. Ответом на выбор жанра должна быть уже функция с @dp.callback_query_handler(), а не @dp.message_handler, из-за того, что клавиатура инлайн.
@dp.message_handler(text='Выбрать фильм')
async def Vibr(message: types.Message):
    markups = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    markups.add(types.KeyboardButton('Жанр'))
    await message.answer(f'Хорошо, давай выберем!', reply_markup=markups)

@dp.message_handler(text='Жанр')
async def choose_genre(message: types.Message):
    markupt = types.InlineKeyboardMarkup()
    for genre in ('Комедия', 'Приключения', 'Драма', 'Фэнтези'):
        markupt.add(types.InlineKeyboardButton(genre, callback_data=genre))
    await message.answer(f'Выбери жанр!', reply_markup=markupt)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы