Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
267 views
in Technique[技术] by (71.8m points)

python - Problems when saving an argument to a variable

I have some code which basically just takes the arg from a command and compares it in an if statement with some text. I don't know why but I keep getting this error when it tries to save the arg to a variable:

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-packagesdiscordextcommandsot.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'

Here's the snippet of code:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There is no element named arg in ctx. If you want to store the arg in the variable: raceInfo, just do raceInfo = arg. Or, instead of having arg as the parameter, just put it like such:

@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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...