Проблемы при сохранении аргумента в переменную

#python #python-3.x #discord.py

#python #python-3.x #discord.py

Вопрос:

У меня есть некоторый код, который в основном просто берет аргумент из команды и сравнивает его в операторе if с некоторым текстом. Я не знаю почему, но я продолжаю получать эту ошибку, когда он пытается сохранить аргумент в переменную:

 Ignoring exception in command raceinfo:
Traceback (most recent call last):
  File "C:UsersUserAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:UsersUserDesktopDiscordMMOScriptsCharacter_Creator.py", line 66, in some_crazy_function_name
    raceInfo = ctx.arg
AttributeError: 'Context' object has no attribute 'arg'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:UsersUserAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandsbot.py", line 903, in invoke
    await ctx.command.invoke(ctx)
  File "C:UsersUserAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 855, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:UsersUserAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Context' object has no attribute 'arg'
 

Вот фрагмент кода:

 @bot.command(name="raceinfo")
async def some_crazy_function_name(ctx, arg):
        raceInfo = ctx.arg
        if raceInfo == "Human" or "human":
 

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

1. Можете ли вы попробовать добавить код, который у вас есть в данный момент? Это значительно упростило бы его использование, чтобы помочь вам.

2. не могли бы вы, пожалуйста, добавить реальный фрагмент кода?

3. Извините, забыл добавить код, добавил его сейчас

4. Что ж, ошибка вполне понятна сама по себе. ctx не имеет элемента arg внутри.

5. AttributeError: 'Context' object has no attribute 'arg' похоже, это должно быть довольно понятным для вас и совершенно непрозрачным для всех остальных, кто ничего не знает о соответствующих объектах.

Ответ №1:

В нем нет элемента с именем arg ctx . Если вы хотите сохранить arg в переменной: raceInfo , просто сделайте raceInfo = arg . Или, вместо того, чтобы иметь arg в качестве параметра, просто поместите его так:

 @bot.command(name="raceinfo")
async def some_crazy_function_name(ctx, raceInfo):
    if raceInfo == "Human" or raceInfo == "human":
        print(raceInfo)  # Add whatever code you would like
 

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

1. Спасибо, я думал, что должен указать это с помощью ctx. Я новичок в работе с аргументами

2. @Tazgirl Нет проблем! Каждый начинает с чего-то.

3. В этом году вы занимаете первое место в 2 процентах. Это неплохо. Я не настолько хорош.

4. Извините. Я пару раз видел, как люди быстро набирали репутацию на SO…

5. Означает ли это, что я делаю что-то не так? Боюсь, я делаю что-то против политики SO, потому что сейчас я быстро набираю репутацию.