Поиск слова в строке Amino
Есть код, который реагирует на определенное слово и кикает с чата. Но оно реагирует сугубо если слово в тексте лишь одно, то есть если будет несколько слов в тексте, то оно не реагирует. Как переписать правильно, чтобы он проходился по всему тексту и искал в нем определенное слово
if (data.message.type == 100) | (data.message.type == 109) |
(data.message.type == 107) | (data.message.type == 110) |
(data.message.type == 108) | (data.message.type == 111) |
(data.message.type == 0)
and (data.message.content == "KKK" ) |
(data.message.content == "Lala") | (data.message.content == "Привет от мрака"):
sub_client.send_message(message=(f'Рейдер {nickname} был кикнут из чата навсегда.'), chatId=data.message.chatId)
sub_client.kick(userId=data.message.author.userId, chatId=data.message.chatId, allowRejoin = False)
nom = 0
Ответы (2 шт):
Наличие любого слова из списка можно проверить так. Я ещё сделал приведение проверяемого текста и слов к одному регистру:
stop_words = ['привет', 'пока', 'хзчтотакое']
if any(word.lower() in data.message.content.lower() for word in stop_words):
...
А ещё вы зря мешаете логические операторы and и or с побитовыми операторами | и &, лучше так не делать. В данном случае используйте логические операторы. И скобки расставьте, а то результат проверок, думаю, будет не совсем такой, как вы ожидаете. Да, и другую проверку тоже можно сократить, используя проверку вхождения элемента в список in. В целом будет так примерно:
stop_words = ["KKK", "Lala", "Привет от мрака"]
if data.message.type in [0, 100, 107, 108, 109, 110, 111] and
any(word.lower() in data.message.content.lower() for word in stop_words):
...