Задать вопрос
@DestinyMaker

Как сделать код короче на aiogram?

Пишу бота для рассказа историй, но истории занимают слишком много места в коде, можно ли сделать данный код короче либо перенести его в другой файл
@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)
        f = open("TWO\TWO1.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, 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)
        f = open("TWO\TWO.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, 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)
        f = open("TWO\TWO2.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, 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)
        f = open("TWO\TWO1.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, 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)
        f = open("TWO\TWO3.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, 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)
        f = open("TWO\TWO2.txt", 'r', encoding="utf-8")
        beta = f.read()
        f.close()
        await call.message.answer(beta, reply_markup=keyF)
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
sanya84
@sanya84
Фанатик Python 3
from io import StringIO


text_file = StringIO()
text_file.write("История 1")
text_file.write("\r\n")
text_file.write("История 2")
text_file.write("\r\n")
text_file.write("История 3")
text_file.write("\r\n")
text_file.seek(0)


# print(repr(text_file.read()))


def all_stories():
    return [storie for storie in text_file.readlines() if "\r\n"]
    
    
def get_storie(index):
    return all_stories()[index]

print(get_storie(0))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lxstvayne
@lxstvayne
Люблю Python
Во-первых, у тебя клавиатуры не динамические, значит их можно вынести в модуль. Во-вторых, можешь использовать оператор with, чтобы не приходилось тратить строку чтобы закрыть файл.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽