Привет, я создаю спам-спам для защиты от нежелательной почты для Discord, и я пытаюсь удалить сообщение, в котором есть определенные ключевые слова / URL-адреса.
Список ключевых слов сохраняется в отдельном файле /banned_words.json, и я хочу, чтобы бот читал из этого файла, когда ключевое слово обнаруживается в сообщении и удаляет это сообщение.
Вот фрагмент кода, с которым я работаю, я борюсь с этой строкой кода if word in word_set:, поэтому будет оценен пример того, как определить word.
def __init__(self, bot):
self.bot = bot
self.bannedwords = dataIO.load_json('data/spamfilter/banned_words.json')
async def banned_words(self, message):
word = word in line.split():
word_set = set(self.bannedwords)
if word in word_set:
await self.bot.delete_message(message)
msg = await self.bot.send_message(
message.channel,
"{}, **Avertisement is not allowed on this server.**".format(
message.author.mention
)
)
await asyncio.sleep(6)
await self.bot.delete_message(msg)
return
Эта строка полностью неверна:
word = word in line.split():
Во-первых, в конце есть посторонний двоеточие. Во-вторых, x in y выводит логическое выражение, представляющее, находится ли x в y.
Вам придется перебирать все слова в сообщении и выполнять проверку для каждый из них:
word_set = set(self.bannedwords)
for word in line.split():
if word in word_set: