所以我看了不少论坛帖子,找不到适合我的代码的东西。
我正在尝试做这样的事情...
case "setnick":
if (args[1]) {
if (message.guild.me.hasPermission("MANAGE_NICKNAMES")) {
if (message.member.hasPermission("CHANGE_NICKNAME"))
message.member.setNickname(args[1])
else message.channel.send("You do not have the permissions! **(CHANGE_NICKNAME)**")
}
else message.channel.send("The bot does not have the permissions! **(MANAGE_NICKNAMES)**")
}
else message.channel.send("There's no argument to set your nickname too! **Eg. f!setnick NICKNAME**")
break;
因此它检查是否存在类似的参数
f!setnick NICKNAME
然后检查该漫游器是否具有权限MANAGE_NICKNAMES
如果没有,则发送聊天消息。
然后检查用户是否具有权限CHANGE_NICKNAME 所以我想知道为什么它不起作用。
任何理由吗?
答案 0 :(得分:1)
您是否尝试过检查它是否还能对您自己的其他用户起作用?如果您在层次结构中比它更高/相同,则机器人无法执行管理员命令(例如更改某人的昵称),并且看到所有者是最终的权力,它可能会返回权限错误。
尝试捕获它,看看错误是什么
message.member.setNickname(args[1]).catch(e=>console.log(e))
如果它返回DiscordAPIError:特权太低...那么我的理论是正确的。它应该适合较低的用户。
答案 1 :(得分:0)
message.member.me
并没有吸引机器人的用户,而是让用户发送了消息。尝试message.guild.members.find("id", client.user.id).hasPermission("MANAGE_NICKNAMES")
答案 2 :(得分:-1)
也应该是args [0],因为第一个参数是0