如何在 python 下一根绳子上设置多个条件

How to make multiple conditions on python next cord

所以我想做一个命令,它只对少数特定的人说一些特定的事情,而对于代码中没有指定的其他人,它只会说一些正常的事情。

@client.command()
async def test(ctx):
    if ctx.author.id == 1:
        await ctx.reply('Hello Person 1')
    if ctx.author.id == 2:
        await ctx.reply("Hello Person 2")
    if not ctx.author.id == 1 and 2:
        await ctx.reply ("Hello")

类似上面的代码,我确实试过了,但是它不会计算第7行的第二个条件。有人有解决方案吗?

ctx.author.id == 1 and 2

这是 True 如果 ctx.author.id == 12。由于 2 不是 0,因此总是真实的,如果 ctx.author.id == 1

,整个表达式总是 True

然后 not 反过来,所以你使用的整个表达式总是 True if ctx.author.id != 1

你的意思是:

not (ctx.author.id == 1 or ctx.author.id == 2)

或者:

ctx.author.id != 1 and ctx.author.id != 2

或者:

ctx.author.id not in [1, 2]

即使这样也行不通:

not ctx.author.id == (1 and 2)

因为它只计算 1 and 20 也不是,所以结果是真实的 2)。不是你想要的,因为这只是测试 ctx.author.id 是否等于 2(令人困惑)。

虽然 Python 看起来像英文,但实际上 不是 英文。在英语中,我可以说“today is hot and sunny”,意思是今天很热and today is sunny。然而,计算机不是那样工作的。他们无法以这种方式推断事物,因此您需要明确说明,例如:

if not (ctx.author.id == 1 and ctx.author.id == 2):
    await ctx.reply ("Hello")