Как запоминать два последних сообщения от пользователя не используя FSMContext от библиотеки aiogram 2.x?

Рейтинг: -1Ответов: 1Опубликовано: 17.05.2023

Пример кода: (last_message_from_user и penultimate_message_from_user не существует)

@dp.message_handler(text=['Назад'])
async def back(messsage: types.Message):
    if last_message_from_user == 'Назад' and penultimate_message_from_user == 'Поддержка':
        main_text_message = ('Меню')
        await messsage.answer(main_text_message, reply_markup=kbs.main_menu)
    elif last_message_from_user == 'Назад' and penultimate_message_from_user == 'Отправить билет':
        main_text_message = ('Поддержка')
        await messsage.answer(main_text_message, reply_markup=kbs.main_menu)

Хочу, чтобы кнопка "Назад" была универсальной для каждого случая, чтобы, вне зависимости от нахождения пользователя в меню бота, возвращалась клавиатура и отправлялось сообщение на ветку старше.

Ответы

▲ 0

Ответ на данный вопрос, в течении дня, не нашел, поэтому сделал данную команду: "Назад", через FSMContext другим (тугим) способом.

# FSMContext
class Support(StatesGroup):
    selection=State()
    open_ticket=State()

# Сообщение "Поддержка"
@dp.message_handler(text=['Поддержка'])
async def support(message: types.Message):
    await message.answer(txt.support(), reply_markup=kbs.support_menu)
    await Support.selection.set()

# Выбор между "Открыть билет", "Назад"
@dp.message_handler(state=Support.selection)
async def support_two(message: types.Message, state: FSMContext):
    await state.update_data(selection=message.text)
    data=await state.get_data()
    if data['selection']=='Открыть билет':
        await message.answer(txt.support_two(), reply_markup=types.ReplyKeyboardRemove())
        await Support.next()
    elif data['selection']=='Назад':
        await message.answer(txt.help(), reply_markup=kbs.main_menu)
        await state.finish()

# Сообщение "Открыть билет"
@dp.message_handler(state=Support.open_ticket)
async def support_three(message: types.Message, state: FSMContext):
    await state.update_data(open_ticket=message.text)
    date=await state.get_data()
    await message.answer(txt.support_three(date), reply_markup=kbs.main_menu)
    user_id=message.from_user.id
    message_text=message.text
    db.support_three(user_id, message_text)
    await state.finish()