@DestinyMaker

Возможно ли сделать короче?

Код сильно удлиняется из-за вечного создания кнопок, можно ли убрать данное повторение либо перенести его в модуль? Ведь там есть различие в callback_data. Не будет ли это мешать? Если возможно, то как?
@by.message_handler(lambda message: message.text == "Рассказ второй")
async def TWO(message: types.Message):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data = "TWO1")
    keyD = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btnThree = types.KeyboardButton(text="В начальное меню")
    keyD.add(btnThree)
    keyF.add(btnTwo)
    await message.answer("Приятного чтения", reply_markup=keyD)
    await message.answer(stories[0], reply_markup=keyF)

@by.callback_query_handler(text="TWO1")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnOne = types.InlineKeyboardButton(text="Предыдущая страница", callback_data="TWOBACK1")
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data="TWO2")
    keyF.add(btnOne, btnTwo)

    await call.message.answer(stories[1], reply_markup=keyF)

@by.callback_query_handler(text="TWOBACK1")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data="TWO1")
    keyF.add(btnTwo)
    await call.message.answer(stories[0], reply_markup=keyF)

@by.callback_query_handler(text="TWO2")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnOne = types.InlineKeyboardButton(text="Предыдущая страница", callback_data="TWOBACK2")
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data="TWO3")
    keyF.add(btnOne, btnTwo)
    await call.message.answer(get_storie(2), reply_markup=keyF)

@by.callback_query_handler(text="TWOBACK2")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnOne = types.InlineKeyboardButton(text="Предыдущая страница", callback_data="TWOBACK1")
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data="TWO2")
    keyF.add(btnOne, btnTwo)
    await call.message.answer(get_storie(1), reply_markup=keyF)

@by.callback_query_handler(text="TWO3")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnOne = types.InlineKeyboardButton(text="Предыдущая страница", callback_data="TWOBACK3")
    keyF.add(btnOne)
    await call.message.answer(get_storie(3), reply_markup=keyF)

@by.callback_query_handler(text="TWOBACK3")
async def send_random_value(call: types.CallbackQuery):
    keyF = types.InlineKeyboardMarkup(resize_keyboard=True)
    btnOne = types.InlineKeyboardButton(text="Предыдущая страница", callback_data="TWOBACK2")
    btnTwo = types.InlineKeyboardButton(text="Следующая страница", callback_data="TWO3")
    keyF.add(btnOne, btnTwo)
    await call.message.answer(get_storie(2), reply_markup=keyF)
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Повторение выносишь в отдельную функцию, то что отличается передаешь как параметры.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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