"""Explain unmatched input instead of silently dropping it or broadcasting it.""" from aiogram import F, Router from aiogram.fsm.context import FSMContext from aiogram.types import Message, CallbackQuery input_fallback_router = Router(name="input_fallback") @input_fallback_router.callback_query() async def unmatched_button(callback: CallbackQuery): await callback.answer("Кнопка устарела или недоступна. Откройте меню заново через /start.", show_alert=True) @input_fallback_router.message(F.text.lstrip().startswith("/")) async def unknown_command(message: Message): await message.answer("Команда не распознана или недоступна на этом шаге. /help — справка, /cancel — отменить текущий ввод.") @input_fallback_router.message() async def unmatched_input(message: Message, state: FSMContext): if await state.get_state(): await message.answer("Этот ввод не подходит для текущего шага. Отправьте данные в формате из подсказки или используйте предложенные кнопки. /cancel — отмена.") else: await message.answer("Сейчас бот не ожидает эти данные. /start — главное меню, /register — регистрация. Для переписки сначала откройте чат.")