Бесконечный вывод сообщения python 3.7 Discord.py

BadWords = ["bad words"] #плохие слова для фильтра

@client.event
async def on_message(message):
    await client.process_commands(message)
    msg = message.content.lower()        #получаем сообщение
    PartOfmsg = msg.split()           #разделить на слова
    print(PartOfmsg)
    i = 0
    j = 0
    while (len(PartOfmsg) > i):      #перебор всех слов
        while (len(BadWords) > j):    #перебор всех плохих слов
            if (BadWords[j] == PartOfmsg[i]):
                PartOfmsg[i] = "$%^&*"      #замена плохого слова
                j = j + 1
            else:
                j = j + 1
        i = i + 1
        j = 0

    msg = " ".join(PartOfmsg)
    print(msg)
    await message.delete()
    await message.channel.send(f'{message.author.mention} хотел сказать: {msg}')

Что происходит


Ответы (1 шт):

Автор решения: Геннадий П

Чтобы найти пересечение слов в двух массивах не обязательно делать двойной цикл, это не практично.

msg = "Проверка раз два три много нет"
BadWords = ['шесть', 'два', 'три']

PartOfmsg = msg.lower().split()

# Находим пересечение двух массивов
intersectionList = list(set(BadWords) & set(PartOfmsg))

# Если найдено, то меняем слова
if len(intersectionList) > 0:
    for int_word in intersectionList:
        msg = msg.replace(int_word, "****")

print (msg)
→ Ссылка