python 如何检查元组是否包含列表中的任何内容?

python how to check if tuple contains anything from list?

我正在用 python 制作一个 Discord 机器人,现在我正在制作一个命令,如果满足某些要求,机器人会重复您的输入。该命令的完整代码是 here (我添加了注释)。我正在清理输入,其中一部分检查输入中是否使用了任何不良词。

输入是一个元组,我这样做是为了显示所说的前 5 个词。

所以我想检查输入中是否使用了 BADWORD_triggers 中的任何一个,目前我是这样做的: elif ' '.join(args) in BADWORD_triggers 然而,这只会检查 是否首先 单词是触发器之一。我还尝试了 elif args in BADWORD_triggerselif BADWORD_triggers in args,这只会导致错误。

对于其他命令,我使用 def async function(ctx, *, arg),我可以在其中检查输入是否包含任何 BADWORD_triggers,如下所示:if arg in BADWORD_triggers: 因为 *, arg 是一个字符串。

所以我的问题很具体:如何检查元组是否包含列表中的任何内容。

示例:

这里是我使用一个坏词“坏”作为唯一和第一个输入,机器人拒绝说出来。但是我希望它也拒绝这个,因为它包含一个坏词。 https://imgur.com/a/CTA06Q1

这里我使用了一个坏词“bad”但是随着输入的增加,消息被删除了 机器人会重复我说的话。 https://imgur.com/a/5v3Rpx2

例如,您可以定义一个变量,如果有错误词则设置为 True:

badwords = False
for word in args:
     if word in BADWORD_triggers: badwords = True

你可以写一个简单的 function:

def check_bad_words(words):
    for word in words:
        if word in BADWORD_triggers:
            return True
    return False

然后在你的 elif-statement:

elif check_bad_words(args):
    pass

我得到的是你有以下两个变量,其中包含一些输入数据和坏词

input_tuple = ("Hii", "This", 'Jack')
bad_words_check = ['xyz', 'abc']

您可以通过以下方式检查天气 input_tuple 中是否存在 bad_words_check 中的任何单词

for word in input_tuple:
    if word in bad_words_check :
       # add your code for handling bad words
       print("got bad words")