@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)
  • Вопрос задан
  • 127 просмотров
Решения вопроса 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, чтобы не приходилось тратить строку чтобы закрыть файл.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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