내 첫 봇을 작성합니다. 명령으로 구성원의 사용자 이름과 역할을 변경하는 봇을 만들려고합니다.
예 :! setnick [member] [newnick]; ! giverole [회원] [역할]
역할 명령이 훌륭하게 작동하지만 여기에서 별명 변경 문서와 혼동됩니다.
@bot.command(pass_context=True)
async def setnick(ctx, nickname):
await change_nickname(server.get_member, nickname)
await ctx.send(f"User's nickname has been changed.")
봇이 실행되지만 불일치하게 명령을 입력하면 다음 오류가 반환됩니다.
Ignoring exception in command setnick:
Traceback (most recent call last):
File "FILEPATH", line 79, in wrapped
ret = await coro(*args, **kwargs)
File "FILEPATH", line 23, in setnick
await change_nickname(server.get_member, nickname)
NameError: name 'change_nickname' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "FILEPATH", line 863, in invoke
await ctx.command.invoke(ctx)
File "FILEPATH", line 728, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "FILEPATH", line 88, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'change_nickname' is not defined
미리 감사드립니다!
change_nickname
문서를 참조 할 수 있듯이 클래스에서 호출하는 함수입니다. 함수가 Client 라는 클래스 아래에 있음을 알 수 있습니다.
즉 change_nickname
, 갑자기 호출 할 수 없습니다 .
예를 들어, 당신의
send(string)
방법 과 같습니다 . 갑자기 호출 할 수는 없습니다. 텍스트 채널 개체를 사용하여 호출해야합니다.
따라서, 당신이 한 이유를ctx.send()
대신하고의send()
.
봇에 로그인 할 때 클라이언트 개체를 만들었을 것입니다 yourObjectName = new Client()
. 그것을 찾아서 다음과 change_nickname()
같이 호출하는 데 사용하십시오 .
await yourObjectName.change_nickname(server.get_member, nickname)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다