как исправить проблему с хендлером который должен ловить пустые сообщения в aiogram python?
Всем здрасьте, дело в том что я создал код в answer.py:
from aiogram import types
from data.config import cfg
from filters import IsPrivate
from keyboards.default import kb_menu
from loader import dp, bot, Dispatcher
from state.forward_FSM import FSMQuestion
devid = cfg['dev_id']
teh_chat_id = cfg['teh_chat_id']
async def client_answer(message: types.Message):
try:
if message.text == '✅Да':
await message.answer(f'Чтобы задать вопрос сначала нажмите кнопку <b>✉ Задать вопрос</b>', reply_markup=kb_menu)
await bot.send_message(teh_chat_id, f'✅ Заявка от <b>{message.from_user.first_name}</b> успешно закрыта!')
elif message.text == '❌Нет':
await message.answer('Продолжите диалог с тех.поддержкой: ')
await FSMQuestion.text.set()
except Exception as e:
await message.answer(f"Упс! <b>Ошибка!</b> Не переживайте, ошибка уже <b>отправлена<b> разработчику.",
parse_mode='HTML')
await bot.send_message(devid, f"Случилась <b>ошибка</b> в чате <b>{message.chat.id}</b>\nСтатус ошибки: `{e}`",
parse_mode='HTML')
def register_handler_answer():
dp.register_message_handler(client_answer, IsPrivate())
и у меня есть код в файле other.py который отлавливает пустые сообщения и отвечает на них, до создания файла answer.py код из other.py работал:
from aiogram import types
from loader import dp, bot,
async def send_message(message: types.Message):
await message.answer(f'Бот не видит что вы пишите, чтобы начать заново нажмите /start' )
def register_handler_other():
dp.register_message_handler(send_message, content_types=['text'], chat_type='private', state=None)
если поставить в списке регистрации хендлеров файл answer.py выше файла other.py то other.py не работает, как это исправить? Вот список регистрации хендлеров в файле app.py
start.register_handler_start()
buttons.register_handler_buttons()
forward_FSM.register_handler_FSM()
admin.register_handler_admin()
registeradmins.register_handler_adminreg()
register.register_handler_registration()
answer.register_handler_answer()
other.register_handler_other()
Остальные хендлеры работают кроме other.register_handler_other()
Ответы (1 шт):
Используйте декораторы вместо register_message_handler.
@dp.message_handler()
async def send_message(message: Message):
await message.answer(f'Бот не видит что вы пишите, чтобы начать заново нажмите /start' )
Советую переписать таким образом весь код, таким образом вы сократите код и освободите себя от рутины ручной регистрации хандленов. Aiogram автоматически все зарегистрирует и ошибки пропадут.