我正在尝试使用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);
}
控制台中未显示任何错误,但消息未发送。
答案 0 :(得分:1)
commands.MissingPermissions
不是error.MissingPermissions
答案 1 :(得分:0)
问题在于,当具有无效权限的用户尝试使用该命令时,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.")
对不起,如果解释不清楚。如果您愿意我可以尝试再次解释,或者有人可以对其进行编辑以使其更清晰,更准确。
答案 2 :(得分:0)
如果您遇到异常,也要:ctx is a required attribute that is missing
这是因为您的机器人不在课堂上。 解决方案:
from discord.ext.commands import MissingPermissions
# Code
@kick.error
async def kick_error(ctx, error):
if isinstance(error, MissingPermissions):
await ctx.send(":redTick: You don't have permission to kick members.")
简而言之,删除self属性。这个答案似乎很愚蠢,但仅对专家而言。 我希望初学者会发现这很有帮助! :)
答案 3 :(得分:0)
@client.event
async def on_command_error(ctx, error):
if isinstance(error, MissingPermissions):
await ctx.send("You are missing permission(s) to run this command.")
else:
raise error
在你的错误处理程序中,总是引发错误