我对编码很新,我遇到了一个问题,我不确定这个问题是什么。 我一直在执行不和谐的bot kick / ban命令,并给了我错误“预期的声明或声明。ts(1128)(11,1)”
以下是我的代码,非常感谢。
代码:
member.kick().then((member) => {
message.channel.send(`:wave: ${member.displayName} has been kicked`);
}).catch(() => {
if (!message.member.hasPermission(['KICK_MEMBERS', 'ADMINISTRATOR'])) {
message.reply("You cannot kick members");
} else if (member.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS', 'ADMINISTRATOR'])) {
message.reply("You cannont kick this member");
}
})
}
if (message.content.startsWith(`${prefix}ban`)) {
let member = message.mentions.members.first();
member.ban().then((member) => {
message.channel.send(`:wave: ${member.displayName} has been kicked`);
}).catch(() => {
if (!message.member.hasPermission(['BAN_MEMBERS', 'ADMINISTRATOR'])) {
message.reply("You cannot ban members");
} else if (member.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS', 'ADMINISTRATOR'])) {
message.reply("You cannont ban this member");
}
})
}
答案 0 :(得分:0)
代码引发错误的原因是因为您无法检查.catch
块中的权限,因为catch块会处理代码引发的错误。相反,应该在执行命令之前 检查权限。此外,您正在检查用户是否具有所有三个权限。您可以使用JavaScript或(||)来检查它们是否具有任何权限,以及管理员权限是否具有ALL PERMISSIONS,从而无需将其添加到列表中。我已经重写了下面的代码
// You never need to check for ADMINISTRATOR, because it has all permissions
if (!message.member.hasPermission('KICK_MEMBERS')) {
message.reply("you cannot kick members");
} else if (member.hasPermission('KICK_MEMBERS' || 'BAN_MEMBERS')) {
message.reply("you cannot kick this member");
}
member.kick()
.then(member => message.channel.send(`:wave: ${member.displayName} has been kicked`))
.catch(e => console.log(e));
}
if (message.content.startsWith(`${prefix}ban`)) {
let member = message.mentions.members.first();
if (!message.member.hasPermission('BAN_MEMBERS')) {
message.reply("You cannot ban members")
} else if (member.hasPermission('KICK_MEMBERS' || 'BAN_MEMBERS')) {
message.reply("You cannont ban this member")
}
member.ban()
.then(member => message.channel.send(`:wave: ${member.displayName} has been banned`)
.catch(e => console.log(e));
}