Как выполнить подкоманду, не вызывая разногласий.ext.команды.ошибки.MissingRequiredАргумент?

#python #discord #discord.py

Вопрос:

(Кстати, это мой первый пост Вот код:

     @commands.command(name="warnings")
    async def warnings(self, ctx, usage, user):
        if usage == "clear":
            f = open(user   ".txt", "w")
            f.write("")
            f.close()
            embed = discord.Embed(title="Warnings removed", description=f"I have removed all warnings for <@!{user}>", colour=discord.Colour.green())
            await ctx.channel.send(embed=embed)
        elif usage == "list":
            try:
                f = open(user   ".txt", "r")
                readResult = f.read()
                if readResult.startswith("Reason: "):
                    embed = discord.Embed(title="Warnings for: <@!"   user   ">", description=readResult, colour=discord.Colour.red())
                    await ctx.channel.send(embed=embed)
                else:
                    embed = discord.Embed(title="This user has no warnings", colour=discord.Colour.green())
                    await ctx.channel.send(embed=embed)
            except:
                embed = discord.Embed(title="This user has no warnings", colour=discord.Colour.green())
                await ctx.channel.send(embed=embed)

 

Я попробовал оператор if и использовал @warnings.error, но это не сработало, я также искал предыдущие вопросы с тем же сообщением об ошибке, но они не совсем совпадают! 🙁
Кстати, сам код не является проблемой 🙂

Чего я ожидаю:

!предупреждения

 >[Something help info.]
 

Что я получаю:

 raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: usage is a required argument that is missing.
 

Комментарии:

1. Вы не передаете arg через команду, не используете !warnings clear [user_id] в своем discord или не используете другое [использование] для его проверки.

2. Проблема не в этом :/ Как я уже сказал, я хочу, чтобы он включал !предупреждения — вместо того, чтобы выдавать мне ошибку, — дайте мне для этого сообщение о помощи.

3. Теперь я понимаю, что ответил вам ниже 🙂

Ответ №1:

используйте param=None для выполнения подкоманды, может быть , вы сможете найти, как создать обычай help , это вам поможет.

 @commands.command(name="warnings")
    async def warnings(self, ctx, usage=None, user=None):
        
    if usage is None:
        pass   # do something here
    elif usage == "clear":
            f = open(user   ".txt", "w")
    ...
 

Комментарии:

1. Это прекрасно работает! Я применил его только тогда, и все хорошо 😛