“如果没有‘赠品钻机’在海峡ctx.command:AttributeError的:‘CheckFailure’对象有没有属性” command'`你能告诉如何解决这一问题?

如何解决“如果没有‘赠品钻机’在海峡ctx.command:AttributeError的:‘CheckFailure’对象有没有属性” command'`你能告诉如何解决这一问题?

这是我的代码

@bot.event
async def on_command_error(error,ctx):
    if not "giveaway rig" in str(ctx.command):
        if isinstance(error,commands.CommandNotFound):
            pass
        elif isinstance(error,commands.MissingrequiredArgument):
            await send_cmd_help(ctx)
        elif isinstance(error,commands.BadArgument):
            await send_cmd_help(ctx)
    else:
        await ctx.bot.send_message(ctx.message.channel,defaultGiveawayErrorMessage)

当它运行时,这个错误显示

if not "giveaway rig" in str(ctx.command):
AttributeError: 'CheckFailure' object has no attribute 'command'

我该如何解决这个问题?

解决方法

手头的问题:

您的活动参数设置错误。
像这样交换它们:

async def on_command_error(ctx,error):

Discord.py 版本:

从表面上看,您似乎使用了一些异步代码:

await ctx.bot.send_message(ctx.message.channel,defaultGiveawayErrorMessage)

在重写(v1.x)中,可以写成:

await ctx.send(defaultGiveawayErrorMessage)

d.py 的重写和异步版本不兼容,,您需要更新 d.py 的版本。
您可以通过运行:

pip install -U discord.py

如果你在输出中看到这个,你就会知道你是否有重写版本:

Requirement already up-to-date: discord.py in c:\PATH\TO\python\python35\lib\site-packages (1.X.X)

(注意最后的版本号)


可能出现的一些问题:

  1. 您已成功安装它,但在使用 rewrite 的文档时运行脚本错误。

原因:这是因为您可能试图在未安装 discord.py 的 Python 版本上运行脚本。


修正:

  • 如果这是在虚拟环境中完成的,它应该很容易修复 - 只需打开 venv 的终端并确保在那里运行命令(而不是在 cmd 提示符中!)。
  • 如果您不使用 venv,最好确保您安装了一个 Python 版本
  1. 每当您运行命令 pip install -U discord.py 时,您只会安装 v0.16.x

原因:您在过时的 Python 版本上安装软件包。


修正:

  • discord.py,截至本答案,仅支持 Python 3.5.3 及以上版本。
    这意味着您需要升级 Python 版本。
  • 如果您仍然遇到此问题并且确定您拥有 3.5.3 或更高版本,请检查 current versions of Python that discord.py supports。对此,一个不错且简单的解决方法是确保再次只安装一个版本的 Python

话虽如此,我强烈建议您使用重写文档,如果您想学习任何教程,请确保它们是最新的(在搜索中包含 rewrite 作为关键字) .

重写版本比异步要好得多,而且一开始可能有点难以掌握更改的内容,而这正是 this page 的用途。它将有助于为您迁移到较新的 d.py 版本奠定基础。


参考:

  • Major model changes - 从异步转向重写,我强烈建议通读本文,因为它可以解决您在开始时遇到的任何问题。
  • OS-specific installations - 如果您在安装过程中仍然遇到问题。
  • on_command_error()
  • commands.Context - 根据您的机器人的功能,您将在很多时候使用上下文实例。熟悉您可以访问哪些属性和方法 - 将来会为您省去很多麻烦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?