【问题标题】:Need advice about discord.py bot需要有关 discord.py 机器人的建议
【发布时间】:2020-03-19 04:21:48
【问题描述】:

编写我的第一个机器人。我正在尝试制作一个机器人,它将通过命令更改成员的用户名和角色。

示例:!setnick [member] [newnick] ; !giverole [成员] [角色]

我的角色命令运行良好,但是我对更改昵称文档here感到困惑

    @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

提前致谢!

【问题讨论】:

  • 可能有你可以使用方法的对象。当前您正在调用未定义的函数。也许像 client.change_nick(*args) 这样的东西。我对这个 API 不太了解,但请阅读:stackoverflow.com/questions/49454787/…
  • 首先感谢您的回答和帮助。前几天看了那个帖子,要求改作者昵称。我很困惑如何让不和谐意识到我正在尝试更改不同的用户昵称。我再看看它,看看我是否可以修改它。嗯。

标签: python python-3.x xcode discord discord.py-rewrite


【解决方案1】:

change_nickname 是您从类中调用的函数,您可以参考您的文档,您会注意到该函数位于名为 Client 的类下。
这意味着您不能随便调用change_nickname

例如,它就像您的send(string) 方法。您不能凭空调用它,您需要使用文本通道对象来调用它。
因此,您使用ctx.send() 而不是使用send() 的原因。

您可能在登录机器人时创建了一个客户端对象yourObjectName = new Client()。找到它并使用它来调用change_nickname(),如下所示:

await yourObjectName.change_nickname(server.get_member, nickname)

【讨论】:

  • 啊,好吧,我现在明白了。谢谢!!
猜你喜欢
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2012-08-02
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多