Я бы действия записал в лист (допустим 10 последних, если выводить больше, то это треш)
А сама поддержка реализована так:
###---Чат для отправки заявок в поддержку---###
SUPPORT = -791963896
@dp.message_handler(content_types=['text'], text=('Поддержка'))
async def name(message: types.Message, state: FSMContext):
await bot.send_message(message.chat.id, "Введите своё имя:",reply_markup=kb.back1)
# Переходим на следующий стейт
await Anketa.name.set()
# Вы можете использовать состояние '*', если вам нужно обработать все состояния
@dp.message_handler(state='*', content_types=['text'], text='❌ Отменить ❌')
@dp.message_handler(Text(equals='❌ Отменить ❌', ignore_case=True), state='*')
async def cancel_handler(message: types.Message, state: FSMContext):
"""
Разрешить пользователю отменить любое действие
"""
current_state = await state.get_state()
if current_state is None:
return
logging.info('Cancelling state %r', current_state)
# Отменить состояние и сообщить об этом пользователю
await state.finish()
# И снимите клавиатуру (на всякий случай)
await message.reply('Хорошо, отменил', reply_markup=types.ReplyKeyboardRemove())
await message.answer('Главное меню ❗️',reply_markup=kb7.start_kb())
@dp.message_handler(state=Anketa.name, content_types=types.ContentTypes.TEXT)
async def age(message: types.Message, state: FSMContext):
# Записываем ответ в storage
await state.update_data(name=message.text)
await bot.send_message(
message.chat.id, "Введите Ваш телефон (внутренний или мобильный)",reply_markup=kb.back1
)
await Anketa.namee.set()
@dp.message_handler(content_types=['text'], text='Отправить', state=Anketa.namee)
await state.update_data(namee=message.text)
data = await state.get_data()
await bot.send_message(
SUPPORT,
f"<b>!Получена заявка \nID: </b>{message.chat.id}\n<b>От:</b> @{message.from_user.username} <a href='tg://user?id={message.from_user.id}'>{quote_html(message.from_user.full_name)}</a>\n"
f'<b>Имя:</b> {data.get("name")}\n'
f'<b>Номер телефона:</b> {data.get("namee")}\n',reply_markup=kb.fun(message.chat.id), parse_mode='HTML'
)
Если не понятно - пиши.