Почему у меня эта ошибка в моем discord.py код

#python #if-statement #discord.py #conditional-statements

#python #if-оператор #discord.py #условные операторы

Вопрос:

Я разрабатываю бота с discord.py и у меня есть ошибка, которую я не могу устранить. Я не думаю, что последнее из discord.py но из python (я новичок в этой области)

Моя проблема: я проверяю первое условие в «если». Если это верно, я проверяю другие условия с другим «если». С другой стороны, если первое «if» возвращает false, я проверяю другие условия с помощью «else», а затем «if» в этом.

В моем самом первом «if», если true, все последующие операторы «if» выполняются, даже если они не должны. У меня такая же проблема с «если» в else.

схема:

 if ...:
   if ...:
        ...
   if ...:
        ...
else:
   if ...:
        ...
   if ...:
        ...

 

мой настоящий код:

 @commands.command()
async def help(self, ctx, categorie = None)
        if categorie == None:

            await ctx.send(f"Mon préfixe sur ce serveur: `{pref}`nnSur quelle partie du bot voulez vous de l'aide ?n`utile` | `fun` | `recherches` | `moderation` | `creator`")

            def checkMessage(message):
                return message.author == ctx.message.author and ctx.message.channel == message.channel

            partie = await self.client.wait_for("message", timeout = 20, check = checkMessage)
            if partie.content == "moderation" or partie.content == "Moderation":
                await ctx.send(embed=modembed)
            if partie.content == "utile" or partie.content == "Utile":
                await ctx.send(embed=utileembed)
            if partie.content == "fun" or partie.content == "Fun":
                await ctx.send(embed=funembed)
            if partie.content == "recherches" or partie.content == "Recherches":
                await ctx.send(embed=recherchesembed)
            if partie.content == "creator" or "Creator":
                creatorembed.set_thumbnail(url="https://zupimages.net/up/20/52/qpa0.png")
                await ctx.send(embed=creatorembed)
        else:
            if categorie == "moderation" or "Moderation" or "mod":
                await ctx.send(embed=modembed)
            if categorie == "utile" or "Utile" or "util":
                await ctx.send(embed=utileembed)
            if categorie == "fun" or "Fun":
                await ctx.send(embed=funembed)
            if categorie == "recherches" or "recherche" or "Recherches" or "Recherche" or "rech" or "Rech":
                await ctx.send(embed=recherchesembed)
            if categorie == "creator" or "Creator":
                    creatorembed.set_thumbnail(url="https://zupimages.net/up/20/52/qpa0.png")
                    await ctx.send(embed=creatorembed)

 

это возвращает меня: результат 1

результат 2

Ответ №1:

У вас здесь неправильная логика:

 if categorie == "moderation" or "Moderation" or "mod":
 

Это условие всегда выполняется. Замените его на

 if categorie in ("moderation", "Moderation", "mod"):
 

Также сделайте это для других ваших if операторов.

Но я рекомендую вам создать свою команду справки, используя HelpCommand class в discord.py . Это более простой и лучший способ создать команду справки. Вы можете прочитать об этом здесь .