Проблема с Contains в Aiogram Telegram Bot
Здравствуйте написал код на aiogram :
eda = ['яблоко', 'груша', 'персик']
@dp.message_handler(filters.Text(contains=eda, ignore_case=True))
async def text_example(message : types.Message):
await message.reply('Фрукты')
Вопрос заключается в том, что contains ждёт пока я все три слова напишу и только тогда реагирует, а надо чтоб он индивидуально каждое слово находил в тексте независимости от местоположения слова.
Как это обойти?
Рад буду помощи
Про equals, startswith, endswith - я знаю, они не нужны
Ответы (2 шт):
Автор решения: oleksandrigo
→ Ссылка
Попробуй так.
@dp.message_handler(lambda msg: msg.text.lower() in eda)
Автор решения: RichardJP
→ Ссылка
Вот два решения для моего вопроса
eda = ['яблоко', 'банан', 'груша', 'персик']
@dp.message_handler(content_types=['text'])
async def main(message : types.Message):
if any(word in message.text for word in eda):
await message.reply('Фруты')
Или
eda = ['яблоко', 'банан', 'груша', 'персик']
@dp.message_handler(lambda msg: any(word in msg.text.lower() for word in eda))
async def text_example(message : types.Message):
await message.reply('Фрукты')