当前位置: 首页 > 知识库问答 >
问题:

忽略命令无异常:discord.ext.commands.errors.命令不找到:命令"makePoll"未找到

汪深
2023-03-14

所以我尝试使用python为我的不和谐机器人做这个简单的投票函数:

@command(name="makePoll")
@has_permissions(manage_guild=True)
async def createPoll(self, ctx, question, *options):
    if len(options) > 10:
        await ctx.send("You can only supply a maximum of 10 options.")

    else:
        embed = Embed(title="Poll",
                     description=question,
                     colour=ctx.author.colour,
                     timestamp=datetime.utcnow())
    fields = [("Options", "\n".join([f"{numbers[idx]} {options}" for idx, option in enumerate(options)]), False),
              ("Instructions", "React to case a vote!", False)]

    for name, value, inline in fields:
        embed.add_field(name=name, value=value, inline=inline)

    await ctx.send(embed=embed)

问题是,当我试图调用函数时,它会给我一个错误。错误:忽略命令无中的异常:discord.ext.commands.errors.命令没有找到:命令“makePoll”没有找到。

编辑:试图命名client.commandmakePoll,但知道它给我这个错误:忽略命令makePoll中的异常:Traceback(最近一次调用最后一次):文件"F:\first try on python\venv\lib\site-包\discord\ext\命令\core.py",第85行,在包装的ret=wait coro(*args,**kwargs)文件"F:/first try on python/for循环/bot1.py",第40行,在createPoll颜色=ctx.author.colour,属性错误:'str'对象没有属性'作者'

上述异常是以下异常的直接原因:

Traceback(最近一次调用最后一次):文件"F:\first try on python\venv\lib\site-包\discord\ext\命令\bot.py",第903行,在调用等待ctx.command.invoke(ctx)文件"F:\first try on python\venv\lib\site-包\discord\ext\命令\core.py",第859行,在调用等待注入(*ctx.args,**ctx.kwargs)文件"F:\first try on python\venv\lib\site-包\discord\ext\命令\core.py",第94行,在包装的提升命令InvokeError(exc)从excdiscord.ext.commands.errors.命令InvokeError:命令引发了一个异常: AtiniteError:'str'对象没有属性'作者'

共有1个答案

马承
2023-03-14

参照您的编辑,它表示“str”对象没有“author”属性。

并且str对象引用的是函数中的ctx。您不必添加变量自己,因为我不认为这个命令在类中。

Discord.py看到这一点,认为“自我是上下文,ctx是字符串参数(用于命令)......”

解决办法是去掉“自我”。

因此,代码是:

@client.command(name="makePoll")
@has_permissions(manage_guild=True)
async def createPoll(ctx, question, *options):
    if len(options) > 10:
        await ctx.send("You can only supply a maximum of 10 options.")

    else:
        embed = Embed(title="Poll",
                     description=question,
                     colour=ctx.author.colour,
                     timestamp=datetime.utcnow())
    fields = [("Options", "\n".join([f"{numbers[idx]} {options}" for idx, option in enumerate(options)]), False),
              ("Instructions", "React to case a vote!", False)]

    for name, value, inline in fields:
        embed.add_field(name=name, value=value, inline=inline)

    await ctx.send(embed=embed)

btw类中主要使用自己

我还建议您将命令的名称设置为与函数名称相同

 类似资料:
  • 我的discord bot能够运行其on_消息代码,但当我尝试运行命令%ping时,它会出错并显示“discord.ext.commands.errors.CommandNotFound:未找到命令”ping“。 我已经导入了所有需要的模块,在底部写了client.run(令牌),并定义了我的令牌和客户端对象,我认为没有必要包含这些代码行。 我已经包括等待client.process_comman

  • 我是新的Python开发和尝试使用pipenv。我运行命令,它成功运行: 然而,当我在一个新的根项目目录中运行命令时,我收到以下消息:。我怀疑我可能需要修改我的. bashrc,但是我不清楚要向文件中添加什么,或者是否需要修改。

  • 我有一个网络钩子齿轮为我的不和谐机器人。我想让embarss命令(在webhook cog中)触发一个webhook,创建时使用用户名和pfp,这很好。然而,我也希望这个命令能够被设置到一个特定的用户身上,这就是问题所在。当我尝试将成员参数添加到embarrass函数中时,它看起来像:async def embarrass(self、ctx、member:discord.member),但不起作用

  • 我在Heroku上使用Postgresql数据库托管了一个RoR应用程序,并且一直在使用PG备份工具将数据库从我的应用程序备份到本地机器上。由于该应用程序仍在开发中,它从编程的角度帮助我降低了我的同事对数据库所做的更改。几个月来,我一直在成功地使用PG备份进行捕获和恢复,但最近,当我运行此处所示的典型命令时: 在curl命令执行后,我遇到此错误: 你知道为什么会这样吗?显然,问题是我无法恢复下载的

  • 我使用的是节点0.10。35和grunt指挥部运作良好。现在升级到0.12之后。3 grunt命令已停止工作。 OS:Mac OSX 10.10.1节点:0.12.3 npm:2.9.1 grunt:0.4.5 我认为可能有问题的节点安装所以我清理安装了3-4次 我试着用- node-v0.12.3.pkg 节点版本管理器(nvm) 许多此类问题的解决方案建议使用 然后使用安装本地节点模块。 我遵

  • 我试着做一个文件: 但是得到了错误: Android:命令未找到 我试图设置Android SDK的路径,但没有帮助: 有没有可能解决这个问题? UPD:我正在使用这个软件中的Git Shell:http://git-scm.com/download/win