很长一段时间以来,我一直在开发一个可以屏蔽很多东西的聊天过滤器。我尝试了两件事,但没有一件能正常工作。 我想出的第一段代码是这样的:
with open('badwords.txt', 'r'):
bad_words = file.read().splitlines()
@client.event
async def on_message(message):
for word in bad_words:
if word in message.content.split(" "):
await message.channel.send("Please don't send that word here.")
await message.delete()
break
但这只会阻止单词,因此我必须添加每个旁路,所以这对我不起作用。然后我最终尝试了一个 RegEx,它工作了一段时间,直到我发现它阻止了没有坏词的东西的问题。 这是我的正则表达式:
with open('badwords.txt', 'r'):
blacklist = file.read().split('\n')
@client.event
async def on_message(message):
for word in blacklist:
regex_match_true = re.compile(fr"[{symbols}]*".join(list(word)), re.IGNORECASE)
regex_match_none = re.compile(fr"([{letters}]+{word})|({word}[{letters}]+)", re.IGNORECASE)
if regex_match_true.search(message.content) and regex_match_none.search(message.content) is None:
await message.channel.send("Please don't send that word here.")
await message.delete()
break
我一直在寻找更多的解决方案,但没有找到任何东西。有人可以帮我吗??