Мне нужно для всего бота поставить заглушку, которая будет блокировать от пользователей ВСЁ, КРОМЕ команд.
Как она выглядит?
Я поставил такую:
async def handle_all_messages(message: types.Message):
if message.text and not message.text.startswith('/'):
await message.reply("Я не могу обработать это сообщение. Пожалуйста, используйте команды.")
важен порядок в котором регистрируются хэндлеры.
если глушилка первая, то она получает запрос и обрабатывает его. дальше он уже никуда не попадает.
нужно поставить обработчик команд первым, тогда если запрос подходящий, он обработается, если нет, то попадает в следующий хэндлер
Да, было бы отлично поставить глушилку в самом начале для всего бота. А потом просто добавлять в неё нужные исключения. Неужели такое не предусмотрено? Это же так логично и удобно.
Александр, А почему вообще бот реагирует на любое сообщения пользователя? Я не понимаю. Например, после любого сообщения бот активирует какую-то функцию из кнопки. Почему так, я хз
RG5000, вообще, я в своих ботах никакой глушилки никогда не предусматриваю. я думаю это и так понятно, что бот реагирует только на те, сообщения, которые ему понятны. хотя, в одном боте предусматривал. он был для детей.
не стоит называть это глушилкой. нужно немного поменять парадигму ))
в самый конце ставится хэндлер, в который попадают только те запросы, которые явно не обработаны выше. и точно также работают rest api фреймфорки - flask, django, fastAPI. и это очень логично.
попробуйте сверху писать хэндлеры для нужных команд. забудьте обо всем остальном пока. и моможете последним поставить просто эхо. типа того