discord.ext.commands.errors.MissingRequiredArgument: пользователь является обязательным аргументом, который отсутствует. Справка :(

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я создаю бота discord, в котором пользователь может ввести префикс бота (например, «bonfire» здесь), а затем сообщение, чтобы оно заключало его в кавычки, и вы можете просмотреть цитату, когда захотите. Однако здесь есть аргумент, который никогда не вводится, и я не уверен, как я могу заставить пользователя ввести его?

 @client.command()
async def quote(ctx,*,message:str,user):
    string=str(message)
    message_list=string.split()
    await ctx.send(message user)
  

Проблема в том, что из-за сообщения * аргумент ‘user’ никогда не вводится. Например, пользователь может ввести цитату bonfire привет всем @example#1230, но @example#1230 никогда не сохраняется в переменной user, потому что каждое отправленное сообщение сохраняется в переменной message

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

1. Сначала вы можете прочитать пользователя, а затем сообщение. quote(ctx, user: discord.Member, *, message) . message имеет тип str по умолчанию, вам не нужно вручную выполнять преобразование. Также не рекомендуется называть переменную после ключевого слова / импорта, например string .

Ответ №1:

Если вы все еще хотите, чтобы пользователь находился в конце команды, вы могли бы сделать что-то вроде этого:

 @client.command()
async def quote(ctx,*, quote):
    # Get user
    try:
        mention = quote.split(" ")[-1]
        user = ctx.guild.get_member(int(mention[2:-1]))
    except Exception:
        discord.ext.commands.BadArgument("Expected Mention")
    message = " ".join(quote.split(" ")[0: -1])
    await ctx.send(message user)