如何解决“如果没有‘赠品钻机’在海峡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)
(注意最后的版本号)
可能出现的一些问题:
- 您已成功安装它,但在使用 rewrite 的文档时运行脚本错误。
原因:这是因为您可能试图在未安装 discord.py
的 Python 版本上运行脚本。
修正:
- 如果这是在虚拟环境中完成的,它应该很容易修复 - 只需打开 venv 的终端并确保在那里运行命令(而不是在 cmd 提示符中!)。
- 如果您不使用 venv,最好确保您安装了一个 Python 版本。
- 每当您运行命令
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 举报,一经查实,本站将立刻删除。