Discord.py ctx를 기본 인수로 전달하는 방법
지정된 사용자에 대한 정보를 인쇄하는 Discord.py를 사용하여 프로필 명령을 작성하고 있습니다.
메시지 작성자를 기본 인수로 전달하고 싶으므로 사용자가 명령 만 작성하면 봇이 프로필을 보냅니다.
@bot.command()
async def profile(ctx, *, user: discord.Member = ctx.message.author):
위의 코드는 작동하지 않습니다. 다음 오류와 함께 오류가 발생합니다.
Traceback (most recent call last):
File "bot.py", line 50, in <module>
async def profile(ctx, *, user: discord.Member = ctx.message.author.name):
NameError: name 'ctx' is not defined
아무도 내가 뭘 잘못하고 내 코드를 작동시키는 방법을 말할 수 있습니까?
편집하다:
나는 문제를 우회했습니다.
@bot.command()
async def profile(ctx, *, user: discord.Member=None):
if(user == None):
user = ctx.message.author
내 질문은 여전히 남아 있습니다. ctx를 기본 인수로 전달하는 방법이 있습니까?
답변
1 fixmycode
짧은 대답은 함수의 시그니처를 변경하므로 그렇게 할 수 없다는 것입니다. 다음 서명을 예상하여 명령이 호출됩니다.
async def my_command(ctx, *args, **kwargs):
ctx
주어진 값이 아니라 첫 번째 매개 변수의 이름입니다. 무엇을 위해 사용 될지에 대한 가정을 할 수 없습니다.
할 수있는 것은 discord.py 문서에있는 예제에 따라 매개 변수의 수를 가정하는 것입니다. 다음과 같이 할 수 있습니다.
async def profile(ctx, *, user:discord.Member):
member = user or ctx.message.author
이 코드에서는 사용자가 member
개인 채널 인 경우를 제외하고는 항상 멤버 라고 가정 할 수 있습니다 .
2 Videro
당신은 이것을 사용할 수 있습니다-
user = ctx.author if not user else user
대신에 -
if(user == None):
user = ctx.message.author