@ShockerJP

Проблема с 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 - я знаю, они не нужны
  • Вопрос задан
  • 560 просмотров
Решения вопроса 1
@ShockerJP Автор вопроса
Вот два решения для моего вопроса
eda = ['яблоко', 'банан', 'груша', 'персик']

@dp.message_handler(content_types=['text'])
async def main(message : types.Message):
    if any(word in message.text.lower() 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('Фрукты')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Свой можно написать

@dp.message_handler(lambda msg: if any(word.lower() in msg.text.lower() for word in eda))
Ответ написан
@Jack444
попробуй так
from  aiogram.types.message import ContentType
eda = ['яблоко', 'груша', 'персик']

@dp.message_handler(commands=eda, content_types=ContentType.TEXT)
async def text_example(message : types.Message):
        await message.reply('Фрукты')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы