Вы проверяете вхождение
предложения в списке
слов. Нужно разбить ваш текст на слова, и проверить на вхождение каждое слово, приведя его к нижнему регистру.
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"]