使用数组过滤掉 swear/curse 个词(辱骂性语言)

filter out swear/curse words (abusive language) using an array

我正在制作一个 nextcord 机器人,我想为 swear/curse 个单词实现一个过滤器。我想要一个数组中的所有这些词,并分配给一个变量(即 badwords)。我的问题是它说“语法无效”。你能帮我解决这个问题吗?

@commands.Cog.listener()
async def on_message(self, message):
    if "https://discord" in message.content:
        embed = nextcord.Embed(title="**Tu n'as pas le droit d'envoyer des liens d'invitation**")
        log = self.bot.get_channel(916007109424984115)
        logembed = nextcord.Embed(title="Link", description="Quelqu'un a envoyé un lien discord")
        await message.delete()
        await log.send(embed=logembed)
        await message.channel.send(embed=embed)
    badwords = ["list of badwords"]
    elif badwords in message.content:
        log = self.bot.get_channel()
        await message.delete()
        await message.channel.send(embed=embed)

我没有做嵌入,swear/curse-words 的日志系统也没有。

您必须遍历列表的元素。这可以通过以下方式完成:

@commands.Cog.listener()
async def on_message(self, message):
    badwords = ["list of badwords"] #move list declaration over here
    if "https://discord" in message.content:
        embed = nextcord.Embed(title="**Tu n'as pas le droit d'envoyer des liens d'invitation**")
        log = self.bot.get_channel(916007109424984115)
        logembed = nextcord.Embed(title="Link", description="Quelqu'un a envoyé un lien discord")
        await message.delete()
        await log.send(embed=logembed)
        await message.channel.send(embed=embed)
    else:
        if any(badword in message.content for badword in badwords): # check if any badword in message.content 
            log = self.bot.get_channel()
            await message.delete()
            await message.channel.send(embed=embed)
            break # Exit the loop as we don't need to go further

是async def造成的无效语法吗? 在这种情况下,您可能需要检查您的 python 版本是否 >3.6

你的代码有 2 个错误

您正在 message.content 上迭代一个列表,并且您在 elif 语句之前声明了坏词,这导致 if 语句中断,因此请在 if 语句开始之前声明它

message = 'curse'

badwords = ['curse'] #declare badwords here
if False:
    pass
elif message in badwords: # iterate your message.content over the badwords list
    print(True)