как сделать ответы на сообщения в телеграмм боты в python aiogram

Рейтинг: 0Ответов: 1Опубликовано: 05.07.2023

Мне нужно сделать так чтобы телеграмм бот на python aiogram отвечал на мои сообщения через handler то есть

@dp.message_handler()
async def answer(message : types.Message):
    if message.text == "Привет":
        await bot.send_message(message.from_user.id, "И тебе привет!!!")

я написал такой код и он работал, но когда я добавил еще один handler он уже не работал

@dp.message_handler() #это первый handler 
async def answer(message : types.Message):
    if message.text == "Привет":
        await bot.send_message(message.from_user.id, "И тебе привет!!!")

@dp.message_handler() 
async def answer(message : types.Message):
    if message.text == "Пока":
        await bot.send_message(message.from_user.id, "До завтра")

И вот первый handler работает, а второй нет, все сообщения попадают в первый handler, и на все сообщения бот отвечает "Привет", а на "Пока" он отвечает. Как это исправить?

я пробовал исправить смотря документацию, но ничего не работает

Ответы

▲ 1Принят

В хэндлере добавьте вот так:

@dp.message_handler(lambda msg: msg.text.lower() == 'привет')
async def answer(message: types.Message):
    await message.answer('и тебе привет')


@dp.message_handler(lambda msg: msg.text.lower() == 'пока')
async def answer(message: types.Message):
    await message.answer('и тебе пока')


@dp.message_handler()
async def answer(message: types.Message):
    await message.answer('...')

таким образом первые 2 хэндлера будут ловить привет и пока, а третий все то, что не отловилось первыми двумя