• Реакция на "плохое сообщение". Как настроить?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вы проверяете вхождение предложения в списке слов. Нужно разбить ваш текст на слова, и проверить на вхождение каждое слово, приведя его к нижнему регистру.

    elif response in rar: #0
    Заменяете на:
    elif [word for word in response.split() if word.lower() in rar]:

    либо этот вариант:
    elif any(word in rar for word in response.lower().split()):


    Принцип работы первого варианта: response разбивается на слова по пробелу, каждое слово приводится в нижний регистр и проверяется на наличие в списке rar если слово есть в списке - дописывается в наш новый список. Если список пустой (ни одного слова из предложения не было в списке для фильтра), то bool() от такого списка вернет False и конструкция не выполнится. Если в списке есть хоть одно слово - вернется True

    Конечно, это все обходится банальным дописыванием цифры\буквы\символа к слову. Для проверки с учитыванием этого нужно будет написать немного другой код, да и ложных срабатываний при частичной проверке не избежать. Допустим, можно сделать так:
    elif any(word in response.lower() for word in rar):

    Теперь даже "Это МаТное слово" будет является тригером, даже при условии, что в rar по сути и нет такого слово "матное", есть лишь его часть
    rar = ["мат", "мат2", "мат3"]
    Ответ написан
    1 комментарий