Как запоминать два последних сообщения от пользователя не используя FSMContext от библиотеки aiogram 2.x?
Пример кода: (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)
Хочу, чтобы кнопка "Назад" была универсальной для каждого случая, чтобы, вне зависимости от нахождения пользователя в меню бота, возвращалась клавиатура и отправлялось сообщение на ветку старше.
Ответы (1 шт):
Автор решения: Bubenchuk
→ Ссылка
Ответ на данный вопрос, в течении дня, не нашел, поэтому сделал данную команду: "Назад", через 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()