如何解决处理discord.py中的错误未经许可
我正在尝试使用kick,ban,prune等命令制作一个审核机器人,并且拥有所有命令,但是我不知道如何处理发件人不提供的错误。没有许可。到目前为止,这是我的代码:
class MyClass {
final int total;
MyClass(this.total);
}
class Test {
static int param = 10;
static MyClass darkerText = MyClass(param);
}
main() {
print(Test.darkerText.total);
}
控制台中未显示任何错误,但消息未发送。
解决方法
commands.MissingPermissions
不是error.MissingPermissions
问题在于,当具有无效权限的用户尝试使用该命令时,error
捕获了该异常,但是error
只是discord.py
捕获的异常因为用户没有权限。因此,该函数正在捕获错误,没问题,但是您的if语句失败了,因为error.MissingPermissions
不是错误的实例。它甚至不存在,因为error
就是函数捕获的discord.py抛出的异常。其中没有MissingPermissions
。因此,您捕获的错误中没有MissingPermissions
之类的东西,因为那只是一个错误。您需要查看error
是否是MissingPermissions
缺少权限类(是)中discord.py
的实例。因此,为了修复它,请导入MissingPermissions
,您会很高兴。我已经在下面为您修复了代码。
from discord.ext.commands import MissingPermissions
# Code
@kick.error
async def kick_error(self,ctx,error):
if isinstance(error,MissingPermissions):
await ctx.send(":redTick: You don't have permission to kick members.")
对不起,如果解释不清楚。如果您愿意我可以尝试再次解释,或者有人可以对其进行编辑以使其更清晰,更准确。
,如果您遇到异常,也要:ctx is a required attribute that is missing
这是因为您的机器人不在课堂上。 解决方案:
from discord.ext.commands import MissingPermissions
# Code
@kick.error
async def kick_error(ctx,MissingPermissions):
await ctx.send(":redTick: You don't have permission to kick members.")
简而言之,删除self属性。这个答案似乎很愚蠢,但仅对专家而言。 我希望初学者会发现这很有帮助! :)
,@client.event
async def on_command_error(ctx,MissingPermissions):
await ctx.send("You are missing permission(s) to run this command.")
else:
raise error
在你的错误处理程序中,总是引发错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。